我想使用 OpenGL 调整图像的大小。我更喜欢 Java,但 C++ 也可以。
我对整个事情真的很陌生,所以这是我所看到的文字过程:
- 将图像作为纹理加载到 OGL 中
- 设置一些关于状态和过滤的东西
- 将不同大小的纹理绘制到另一个纹理上
- 将纹理数据放入数组或其他东西中
您认为使用 OpenGL 和 GPU 会比使用基于 CPU 的 BLIT 库更快吗?
谢谢!
最佳答案
您可以简单地使用硬件 blit 功能,而不是将四边形渲染到目标 FBO 中:glBlitFramebuffer
。它的论点很直接,但需要仔细准备源和目标 FBO:
- 确保 FBO 完整(
glCheckFramebufferStatus
) - 独立设置读取FBO目标和写入FBO目标(
glBindFramebuffer
) - 设置绘图缓冲区和读取缓冲区 (
glDraw/ReadBuffers
) - 调用
glBlitFramebuffer
,在参数中设置GL_LINEAR过滤器
我打赌它在 GPU 上会快得多,尤其是对于大图像。
关于java - 使用 OpenGL 调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102277/