众所周知,glReadPixels()
会阻塞管道并使用 CPU 转换数据格式,尤其是当我想将深度值读取到系统 RAM 时。
我尝试了 Songho 提供的 PBO,但我发现它只有在 param ofglReadPixels()
设置为 GL_BGRA 时才有用。
- 当我将 PBO 与 param 一起使用时
GL_BGRA
,读取时间几乎为 0.1ms,CPU 使用率为 4%。 - 当我将参数更改为 时
GL_RGBA
,它读取 2ms,CPU 使用率为 50%。
我尝试时也是如此GL_DEPTH_COMPONENT
。显然缓慢是由转换引起的,所以任何人都知道如何阻止它转换数据格式?
在我的程序中,我必须在不到一秒的时间内读取深度值并计算 16*25 次,所以 2ms 是不可接受的。