使用OpenGL调整图像大小

时间:2011-02-24 08:44:25

标签: java c++ opengl resize rendering

我想使用OpenGL调整图像大小。我更喜欢用Java编写,但C ++也可以。

我对整个事情都很陌生,所以这就是我所看到的文字过程:

  1. 将图像作为纹理加载到OGL
  2. 设置一些东西,关于州和过滤
  3. 将不同大小的纹理绘制到另一个纹理上
  4. 将纹理数据转换为数组或其他内容
  5. 你认为使用OpenGL和GPU比使用基于CPU的BLIT库更快吗?

    谢谢!

2 个答案:

答案 0 :(得分:5)

您可以简单地使用硬件blit功能:glBlitFramebuffer,而不是将四元组渲染到目标FBO中。它的论点是直截了当的,但它需要仔细准备你的源和目标FBO:

  • 确保FBO完整(glCheckFramebufferStatus
  • 设置读取FBO目标并独立写入FBO目标(glBindFramebuffer
  • 设置绘制缓冲区和读取缓冲区(glDraw/ReadBuffers
  • 调用glBlitFramebuffer,在参数
  • 中设置GL_LINEAR过滤器

我敢打赌它在GPU上要快得多,特别是对于大型图像。

答案 1 :(得分:1)

取决于,如果图像很大,使用OpenGL可能会更快。但是,如果它只是在调整大小进程而不再在GPU端进行处理,那么它就不值得,因为它很可能比CPU慢。

但是如果您需要调整图像大小,并且可以在OpenGL中实现进一步处理,那么这是一个值得的想法。