使用 OpenGL 调整图像大小

发布于 2024-10-19 08:59:03 字数 262 浏览 1 评论 0原文

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

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

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

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

谢谢!

I'd like to resize an image using OpenGL. I'd prefer it in Java, but C++ is OK, too.

I am really new to the whole thing so here's the process in words as I see it:

  1. load the image as a texture into OGL
  2. set some stuff, regarding state & filtering
  3. draw the texture in different size onto another texture
  4. get the texture data into an array or something

Do you think if it would be faster to use OpenGL and the GPU than using a CPU-based BLIT library?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌无敌 2024-10-26 08:59:03

您可以简单地使用硬件 blit 功能:glBlitFramebuffer,而不是将四边形渲染到目标 FBO 中。它的参数很简单,但需要仔细准备源和目标 FBO:

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

我敢打赌,它在 GPU 上会快得多,尤其是对于大图像。

Instead of rendering a quad into the destination FBO, you can simply use hardware blit functionality: glBlitFramebuffer. Its arguments are straight forward, but it requires a careful preparation of your source and destination FBO's:

  • ensure FBO's are complete (glCheckFramebufferStatus)
  • set read FBO target and write FBO target independently (glBindFramebuffer)
  • set draw buffers and read buffers (glDraw/ReadBuffers)
  • call glBlitFramebuffer, setting GL_LINEAR filter in the argument

I bet it will be much faster on GPU, especially for large images.

国粹 2024-10-26 08:59:03

视情况而定,如果图像很大,使用 OpenGL 可能会更快。但是,如果它只是执行调整大小过程,而 GPU 端没有更多处理,那么这是不值得的,因为很可能会比 CPU 慢。

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

Depends, if the images are big, it might be faster using OpenGL. But if it's just doing the resize process and no more processing on the GPU side, then it's not worth it as is very likely that is going to be slower than the CPU.

But if you need to resize the image, and you can implement further processing in OpenGL, then is a worthy idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文