|
本帖最后由 yangwenyong 于 2012-3-28 12:44 编辑
新手有问题请教各位老师
现象:
快速入门指导里边这样说:
如果要使用 2D 图像文件作为纹理映射的图形, 只要将文件名赋给 Image 对象并将 Image 关联到 Texture2D 即可.
下面的代码段 将文件 sun.tif 作为纹理映射的图形.
osg::StateSet* state = node->getOrCreateStateSet();
// 读取纹理图像.
osg::ref_ptr image = new osg::Image;
image->setFileName( "sun.tif" );
因为程序运行时内存占用大的问题,所以我按照上面所说的方法进行开发,但是纹理无法显示出来
用这个方法之前,我用osgDB::readImageFile()直接把图片读入进来后再关联到Texture2D ,是可以显示出来纹理的。
问题:
难道必须用osgDB::readImageFile()才能把纹理显示出来吗?
在这个阶段,用readImageFile读出图像的话,内存就会占用的很大。
同样的程序,我用另外一家商用的3d引擎做的话,该引擎只是用Texture->setFileName()关联上,最终就可以显示纹理了。
所以它内存耗用不大的,
用osg的话,因为用了osgDB::readImageFile(),所以内存耗用很大,我感觉内存消耗大的原因和纹理图像有很大的关系。
为什么osg用image->setFileName()关联不好使呢?是我使用的有问题吗?
怎么解决呢?
|
|