如何在openscenegraph中应用纹理到模型
How to apply textures to a model in openscenegraph?
我有一个flt模型,它引用了*tga纹理文件。我把这些*转换了。Tga文件到*。使用Nvidia纹理工具(nvdxt.exe)制作dds文件。
我知道如何阅读和应用单个。dds纹理文件到我的模型(terrain.flt):-
osg::ref_ptr<osg::Node> terrainModel (osgDB::readNodeFile("c:/my_folder/terrain.flt"));
osg::ref_ptr<osg::Texture2D> tex (new osg::Texture2D);
osg::ref_ptr<osg::Image> image (osgDB::readImageFile("c:/my_folder/road.dds "));
tex->setImage(image.get());
osg::ref_ptr<osg::StateSet> state=terrainModel->getOrCreateStateSet();
state->setTextureAttributeAndModes(0,tex.get(),osg::StateAttribute::ON);
但我不知道如何阅读和应用所有这些纹理*。DDS到我的模型(terrain.flt)。
my attempt:-
osg::ref_ptr<osg::Node> terrainModel (osgDB::readNodeFile("c:/my_folder/terrain.flt"));
osg::ref_ptr<osg::Texture2DArray> texArray (new osg::Texture2DArray);
for(int i=0;i<my_folder_files.size();i++)
{
osg::ref_ptr<osg::Image> image (osgDB::readImageFile("c:/my_folder/"+file(i)));
texArray->setImage(i,image);
}
osg::ref_ptr<osg::StateSet> state=terrainModel->getOrCreateStateSet();
state->setTextureAttributeAndModes(0,texArray.get(),osg::StateAttribute::ON);
但是,它不工作。帮助我。
osg::ref_ptr<osg::Node> terrainModel (osgDB::readNodeFile("c:/my_folder/terrain.flt"));
osg::Texture2D* texture = new osg::Texture2D;
osg::ref_ptr<osg::Image> image (osgDB::readImageFile("c:/my_folder/road.dds "));
texture->setImage(image.get());
texture->SetWrap(osg::Texture2D::WrapParameter::wrap_s,osg::Texture2D::Wrapmode::Mirror);
texture->SetWrap(osg::Texture2D::WrapParameter::wrap_t,osg::Texture2D::Wrapmode::Mirror);
texture->SetWrap(osg::Texture2D::WrapParameter::wrap_r,osg::Texture2D::Wrapmode::Mirror);
texture->setFilter(osg::texture2D::FilterParameter::MIN_FILTER,osg::Texture2D::FilterMode::LINEAR);
texture->setFilter(osg::texture2D::FilterParameter::MAG_FILTER,osg::Texture2D::FilterMode::LINEAR);
osg::material *material = new osg::material;
osg::stateset *stateset = new osg::stateset;
stateset->setTextureAttribute(0,texture,osg::stateattribute::OVERRIDE);
stateset->setTextureMode(0,GL_TEXTURE_2D,osg::stateattribute::ON|osg::stateattribute::OVERRIDE);
stateset->setTextureMode(0,GL_TEXTURE_GEN_S,osg::stateattribute::ON|osg::stateattribute::OVERRIDE);
stateset->setTextureMode(0,GL_TEXTURE_GEN_T,osg::stateattribute::ON|osg::stateattribute::OVERRIDE);
stateset->setAttribute(material,osg::stateattribute::OVERRIDE);
相关文章:
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- QTableView:endMoveRows在模型中重置水平页眉大小
- SFML纹理像播放器
- OpenGL大的3D纹理(>2GB)非常慢
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 将IBM Rhapsody模型集成到VS 2019中
- 旋转模型矩阵时的形状失真
- 着色器纹理值与创建纹理时写入的值不同
- 添加新纹理OpenGL时,模型消失了
- 在我的模型DirectX11中添加纹理的问题
- 危机纳米服中的多个纹理 - 使用Assimp加载模型
- Opengl C++:纹理代码纹理所有具有相同纹理的模型
- 为什么我的模型采用天空盒的纹理?
- 我如何缓冲模型矩阵数据到纹理使用OpenGL ES2, GLSL, c++
- 在BMP模型纹理上的细胞阴影效果
- OpenGL加载OBJ模型,纹理失真
- 对象模型加载纹理坐标和顶点位置没有正确加载
- 如何在openscenegraph中应用纹理到模型
- 找出模型中包含非不透明纹理的Tris
- 使用VAO/VBO的OpenGL模型/纹理渲染