使用OpenGL调整图像大小

Alb*_*ore 3 c++ java opengl rendering resize

我想使用OpenGL调整图像大小.我更喜欢Java,但C++也没问题.

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

  1. 将图像作为纹理加载到OGL中
  2. 设置一些关于状态和过滤的东西
  3. 将不同大小的纹理绘制到另一个纹理上
  4. 将纹理数据转换为数组或其他内容

您认为使用OpenGL和GPU比使用基于CPU的BLIT库更快吗?

谢谢!

kva*_*ark 5

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

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

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