有40多个图层(屏幕大小,2500*2500),用户可选任意多个图层同时进行缩放/旋转/平移,可以拖动鼠标看到预览效果。图层之间有不同混合(blend)模式,所以在缩放/旋转/平移后,还要进行混合。现在在64bit Windows上所有数据都在内存中,用纯CPU实现,感觉很卡.
先不考虑混合的速度以及真正的变形,只考虑生成预览图, 如何让缩放/旋转/平移更快。 FBO 会好吗?最好也能在32bit Windows上流畅运行, 假设显卡很好吧。(能适应一般显卡更好)
先不考虑混合的速度以及真正的变形,只考虑生成预览图, 如何让缩放/旋转/平移更快。 FBO 会好吗?最好也能在32bit Windows上流畅运行, 假设显卡很好吧。(能适应一般显卡更好)
解决方案 »
- 裸辞了,散分!
- 关于程序编译的设置
- 请问stl标准模板库能支持串行话吗?
- ●●●关于二维数组引用的问题,请帮忙看看!!●●●
- 求有关应用程序框架方面的原理知识
- 求助!!!我在vc中调用windows api为什么出这种错误?
- 高分请教!!万分感谢!!sybase11.9.2+vc6.0如何开发数据库程序?
- 急,18号要交,太难,请高手出手相救
- 我下个Vstudio6.0中文企业版,怎么我装中文的SP5说语言不对?
- VC中十六进制(UTF-16编码类型)和字符(主要是中文字符,其他日本等忽略)互转的方法?
- VS2010该怎样正确链接matlab生成的dll文件,使得在其他电脑上也可以运行mfc程序?
- 如何连接到已打开的WORD(不知是否很难)
http://blog.csdn.net/fengbingchun/article/details/6531695
for(i=0; i < 40; ++i)
{
1.Create Texture
2.Copy Pixel to Texture
3.Create FBO
4.Copy Texture to FBO with Rotate/Scale Matrix
5.Read Pixel
6.Do blending.
}
其中操作层用来做用户交互,只处理这一个层加一个背景,而且不用插值,保证速度。
计算层:在用户设定完参数之后,对当前图层按最终质量进行运算,这个算法的速度可以稍慢,但质量要求高。
显示层:在每一次用户进行操作后调用 ,从后向前读取层数据,并且绘制到一个图像控件上,用为显示用的数据,用户在其上进行屏幕放大、缩小和平移。
你说的旋转、图像缩放、Blend 等算法都是放在计算层中,根据用户的命令进行调用。
我们自己写ALPHA混合, 所以只能让GPU做缩放旋转平移. 我用FBO + Texture 试了一下,的确比用CPU快多了。 但如果显卡不支持FBO,或显卡很衰咋办?
用户可以选任意多层进行缩放旋转平移。 图像金字塔是个好主意, 比如8000x8000的图层大小, 缩小时,取4000x4000, 或2000x2000的图,可减小IO.
谢谢如此详细的解释!我的图层可能是10000x10000大小, 如果全交给OpenGL去生成mipmap,担心它受不了. 在32bit OS上本来可用内存就不多,不想让OpenGL占用太多. 我自己做了内存管理和Paging. 因此, 我必须先用CPU把图缩小,再给GL. 不知有木有更好的办法?
谢谢, 我们已用SSE做Blend,并正在提速.