查看: 1650|回复: 4

加载纹理

[复制链接]

该用户从未签到

发表于 2009-11-30 00:07:43 | 显示全部楼层 |阅读模式
为什么我的纹理加载不到坦克上去呢?
代码如下:
int main()
{
//创建Viewer对象,场景浏览器
osgViewer::Viewer* viewer = new osgViewer::Viewer();
//创建场景组节点
osg::Group* root = new osg::Group();
//创建一个节点
osg::Node* node = new osg::Node();
//读取一个牛的模型
node = osgDB::readNodeFile("t72-tank_des.osg");



  osg::Texture2D* KLN89FaceTexture = new osg::Texture2D;
   //避免在优化过程中出错
     KLN89FaceTexture->setDataVariance(osg::Object:YNAMIC);
   // 从文件读取图片
   osg::Image* klnFace = osgDB::readImageFile("tank.rgb");
     //  将图片关联到纹理
   KLN89FaceTexture->setImage(klnFace);
   // 创建StateSet
   osg::StateSet* stateOne = new osg::StateSet();
   // 将纹理关联给StateSet的纹理单元0
   stateOne->setTextureAttributeAndModes(0,KLN89FaceTexture,osg::StateAttribute::ON);
   //  将渲染状态关联给tanke节点
   node->setStateSet(stateOne);



//添加到场景
root->addChild(node);
//优化场景数据
osgUtil::Optimizer optimizer ;
optimizer.optimize(root) ;
//设置场景数据
viewer->setSceneData(root);
//初始化并创建窗口
viewer->realize();
//开始渲染
viewer->run();
return 0 ;
}
感谢

该用户从未签到

发表于 2009-11-30 08:38:45 | 显示全部楼层
请检查osg::Image* klnFace是否得到了有效的实例

该用户从未签到

 楼主| 发表于 2009-12-1 18:36:03 | 显示全部楼层
我不明白您的意思   我该怎么检查

该用户从未签到

发表于 2009-12-1 23:17:16 | 显示全部楼层
这个坦克节点似乎不是只包含一个纹理对象,我很久没看过海军教程,,具体记得不是很清楚了~我现在发烧,没给你找到这个文件具体分析,,你可以打开.osg文件看看~~建议你换一种方式,,使用多重纹理叠加纹理,,并使用TexEnv生成纹理坐标,,注意设置纹理单元为1~~~

该用户从未签到

发表于 2009-12-2 08:24:56 | 显示全部楼层
检查osg::Image* klnFace是否是空节点,也就是tank.rgb这个文件是否存在。

PS:FlySky要多注意身体才是,那是革命的本钱~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表