查看: 954|回复: 4

关于纹理的自动释放机制

[复制链接]

该用户从未签到

发表于 2013-9-6 15:35:19 | 显示全部楼层 |阅读模式
我现在需要循环的对一个节点绑定不同的纹理,这一组纹理的指针保存在一个纹理数组中,切换绑定的纹理时直接用setTextureAttributeAndModes(0,texture[i],osg::StateAttribute::ON); 其中texture[i]就是需要切换到的纹理,但当我切换回来的时候发现原来的纹理已经被释放了,请问我该怎么设置,让这个数组内的纹理都不被释放,可以在其中任意切换

该用户从未签到

发表于 2013-9-6 19:01:46 | 显示全部楼层
当切换到这个数组是,在建立对应的IMAGE对象,参数只传图片名称!
用时建立对象,不用时释放!
否则你经管可以用静态变量都建立,但内存开销会很大!

该用户从未签到

 楼主| 发表于 2013-9-6 20:58:21 | 显示全部楼层
VR_user_happy 发表于 2013-9-6 19:01
当切换到这个数组是,在建立对应的IMAGE对象,参数只传图片名称!
用时建立对象,不用时释放!
否则你经管 ...

没有image对象,前提是生成了一组纹理,将这一组纹理的指针保存在了数组里,因为我是要动态切换的,所以为了实时性要在内存中保存若干个纹理,但在这若干个纹理之间切换时会产生自动释放的问题,而我想自己控制它们的释放,不想让OSG代办,因为我有我自己的策略来决定什么时候释放哪个纹理内存

该用户从未签到

发表于 2013-9-7 01:25:46 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-7 01:53 编辑

你纹理不用IMAGE ,用什么?都不说清楚!
你不想让osg管理内存,你怎么控制OSG的整个渲染机制?
OSG内存管理机制就是如果没有引用(或者使用)就会释放内存!
如果你确定一直使用,那就使用静态变量!

否则,就说明你在使用对象的机制的策略上有问题!
不要把你偶尔使用的纹理一直占用内存!
强调:使用的时候再建立这些对象,不管你是否使用的是IMAGE对象还是其它对象!不用就不创建,这是原则!

该用户从未签到

发表于 2013-9-8 22:41:12 | 显示全部楼层
好像有一个ImageSequece,你看看或者参考下扩展扩展。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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