我想使用OpenGL调整图像大小。我更喜欢用Java,但是C++也可以。使用OpenGL调整图像大小
我真的很新的整个事情,所以这里的文字的过程中,我看到它:
- 负载图像作为纹理到OGL
- 设置一些东西,关于国家&过滤
- 绘制在不同尺寸纹理到另一个纹理
- 得到纹理数据到一个数组或东西
您是否认为使用OpenGL和GPU比使用基于CPU的BLIT库更快?
谢谢!
我想使用OpenGL调整图像大小。我更喜欢用Java,但是C++也可以。使用OpenGL调整图像大小
我真的很新的整个事情,所以这里的文字的过程中,我看到它:
您是否认为使用OpenGL和GPU比使用基于CPU的BLIT库更快?
谢谢!
您可以简单地使用硬件blit功能:glBlitFramebuffer
,而不是将四边形渲染到目标FBO中。它的参数是直线前进,但它需要你的源和目标FBO的的精心准备:
glCheckFramebufferStatus
)glBindFramebuffer
)glDraw/ReadBuffers
)glBlitFramebuffer
,在参数设定GL_LINEAR滤波器我敢打赌,GPU上的速度会更快,特别是对于大图像。
非常感谢说明! :-)高度赞赏! – 2011-02-24 14:33:59
取决于,如果图像很大,使用OpenGL可能会更快。但是如果只是在调整大小的过程并且不在GPU方面进行更多的处理,那么这是不值得的,因为这很可能会比CPU慢。
但是,如果您需要调整图像大小,并且可以在OpenGL中实施进一步的处理,那么这是一个值得的想法。
我认为这会更快。如果你这样做了很多,瓶颈将是GPU的RAM链接。因此,如果您需要几种不同格式的相同图像,则可以在VRAM中加载一次,然后一次生成所有图像。 – 2011-02-24 08:47:40
这就是我的想法。然而,我仍然想知道如何去做... – 2011-02-24 08:56:04
我真的怀疑它会快很多,因为与上面评论相同的原因 - 在GPU和RAM之间传输内容通常很慢。但愿意被证明是错误的:D – 2011-02-24 08:56:10