|
本帖最后由 akingbr 于 2011-4-14 17:32 编辑
我不知道有人遇到过类似得问题么, 非常奇怪.
1个月前, 我做1个demo得时候,需要自己计算多张动态图像,然后贴在一张
透明得QUAD上, 大概每间隔2~3秒切换一张计算出得图像, 然后出现一个
奇怪得问题就是: 第1次显示第1张图片得时候是正确得,彩色的, 然后紧接
着显示第2张时候, 图片自动就变成黑白色的了.
当时也没搞清楚怎么回事,就是把计算图像时候,分配osg::Image时候的
像素格式,GL_RGB, GL_RGBA, GL_RGBA8等一通乱试,好象是换
了其中一个就突然好了.我以为解决了.
但最近做一个类似"泡泡"的显示时候(利用OSG里的二维控件), 就找了
几个带alpha图片, 其中有很多张是很相似的,就是颜色不太同,然后
那个奇怪的问题又出现了, 就是弹出第1个泡泡的时候, 颜色正确,
但是,在弹出1次,颜色又直接变灰了, 经过反复测试,发现如果
第2次的泡泡和第一次一样或者很近似(仅仅颜色不同),就会变灰,
但是,如果换一张差异较大的泡泡时候,颜色就正常.
我不知道这是OSG bug, 还是我哪用的不对,两次出现的现象的共通
点就是:2次刷新的图片像素大都都是一样的,或者是很近似的(仅仅颜色不同,
或者是少许的像素值变化), 就直接变灰.
这个有没有什么解决思路提示下? 会不会和osg::image 缓存什么的
相关,比较困惑, 如果有类似情况经验的,或者明白啥原理的给指点
下解决思路.
谢谢了.
补充: 经过最新测试,如果关掉第一张图片,然后等个较长一段时间,
第2次再调用(相同或者相似)图片, 就不会出现这个问题. 难道
是因为释放问题? 代码已经关闭CACHE了, 每次都是从磁盘上
直接读了? |
|