每一帧,我的程序都会从USB摄像机接收新图像。该映像最初将位于CPU内存中。 OpenGL中将此图像绘制到屏幕上以填充整个屏幕的最快方法是什么?
目前,我正在将图像数据上传到纹理,然后渲染全屏四边形。但是,在我尝试的其他计算机上运行速度不快。
答案 0 :(得分:7)
目前,我正在将图像数据上传到纹理,然后渲染全屏四边形。但是,这在尝试的其他计算机上运行速度不快。有任何想法吗?感谢。
glTexImage2D 执行完整纹理初始化(这意味着,分配,对象设置等)。如果您只想用相同大小的图像替换纹理图像,请使用 glTexSubImage2D ,这要快得多。如果你想异步这样做,那么看看 Pixel Buffer Objects
答案 1 :(得分:2)
Blitting是一种可能的解决方案,有一个thread可以讨论它。但他们并没有给予好评。