osg 1 添加纹理

来源:互联网 发布:winxp网络共享设置 编辑:程序博客网 时间:2024/05/16 19:08
#ifdef _DEBUG#pragma comment(lib,"osgd.lib")#pragma comment(lib,"osgDBd.lib")#pragma comment(lib,"osgViewerd.lib")#pragma comment(lib,"OpenThreadsd.lib")#pragma comment(lib,"osgGAd.lib")#else#pragma comment(lib,"osg.lib")#pragma comment(lib,"osgDB.lib")#pragma comment(lib,"osgViewer.lib")#pragma comment(lib,"OpenThreads.lib")#pragma comment(lib,"osgGA.lib")#endif#include #include #include #include #include #include #include #include #include #include osg::ref_ptr CreateBox(){osg::ref_ptr geode = new osg::Geode;osg::ref_ptr hints = new osg::TessellationHints;osg::ref_ptr shape = new osg::ShapeDrawable(new osg::Box(osg::Vec3(.0,0.0,0.0),10.0,10.0,10.0),hints);osg::ref_ptr material = new osg::Material;osg::ref_ptr texture2D = new osg::Texture2D;osg::ref_ptr image = new osg::Image;shape->setColor(osg::Vec4(0.2,0.4,0.6,0));//设置材质material->setAmbient(osg::Material::FRONT_AND_BACK,osg::Vec4f(1.0,1.0,1.0,1.0));material->setDiffuse(osg::Material::FRONT_AND_BACK,osg::Vec4f(1.0,1.0,1.0,1.0));material->setSpecular(osg::Material::FRONT_AND_BACK,osg::Vec4f(1.0,1.0,1.0,1.0));material->setShininess(osg::Material::FRONT_AND_BACK,60.0);//设置纹理image = osgDB::readImageFile("Images/road.png");if(image->valid()){texture2D->setImage(image);}geode->getOrCreateStateSet()->setAttributeAndModes(material,osg::StateAttribute::ON);geode->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);geode->getOrCreateStateSet()->setTextureAttributeAndModes(0,texture2D,osg::StateAttribute::ON);hints->setDetailRatio(0.5);geode->addDrawable(shape);return geode;}int main(){osg::ref_ptr viewer = new osgViewer::Viewer;// viewer->setSceneData(osgDB::readNodeFile("glider.osg"));viewer->setSceneData(CreateBox());return viewer->run();}
0 0
原创粉丝点击