【发布时间】:2011-09-15 04:19:34
【问题描述】:
每一帧,我的程序都会收到来自 USB 摄像机的新图像。该图像最初将位于 CPU 内存中。在 OpenGL 中,将这个图像绘制到屏幕上以填满整个屏幕的最快方法是什么?
目前,我将图像数据上传到纹理,然后渲染全屏四边形。但是,这在我尝试过的另一台机器上运行速度并不快。
【问题讨论】:
每一帧,我的程序都会收到来自 USB 摄像机的新图像。该图像最初将位于 CPU 内存中。在 OpenGL 中,将这个图像绘制到屏幕上以填满整个屏幕的最快方法是什么?
目前,我将图像数据上传到纹理,然后渲染全屏四边形。但是,这在我尝试过的另一台机器上运行速度并不快。
【问题讨论】:
目前,我将图像数据上传到纹理,然后渲染全屏四边形。但是,这在尝试过的另一台机器上运行速度不是很快。有任何想法吗?谢谢。
glTexImage2D 进行完整的纹理初始化(即分配、对象设置等)。如果您只想替换纹理图像为相同大小的图像,请使用 glTexSubImage2D,这要快得多。如果您想异步执行此操作,请查看 Pixel Buffer Objects
【讨论】:
Blitting 是一种可能的解决方案,thread 对此进行了讨论。不过,他们并没有给它一个很好的评价。
【讨论】: