【问题标题】:What's the fastest way to draw a new fullscreen image each frame in OpenGL?在OpenGL中每帧绘制一个新的全屏图像的最快方法是什么?
【发布时间】:2011-09-15 04:19:34
【问题描述】:

每一帧,我的程序都会收到来自 USB 摄像机的新图像。该图像最初将位于 CPU 内存中。在 OpenGL 中,将这个图像绘制到屏幕上以填满整个屏幕的最快方法是什么?

目前,我将图像数据上传到纹理,然后渲染全屏四边形。但是,这在我尝试过的另一台机器上运行速度并不快。

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    目前,我将图像数据上传到纹理,然后渲染全屏四边形。但是,这在尝试过的另一台机器上运行速度不是很快。有任何想法吗?谢谢。

    glTexImage2D 进行完整的纹理初始化(即分配、对象设置等)。如果您只想替换纹理图像为相同大小的图像,请使用 glTexSubImage2D,这要快得多。如果您想异步执行此操作,请查看 Pixel Buffer Objects

    【讨论】:

      【解决方案2】:

      Blitting 是一种可能的解决方案,thread 对此进行了讨论。不过,他们并没有给它一个很好的评价。

      【讨论】:

      • glDrawPixels 和大多数其他光栅操作已从正在进行的 OpenGL-3 核心中弃用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多