繁体   English   中英

使用OpenGL调整图像大小

[英]Resizing an image using OpenGL

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

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

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

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

谢谢!

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM