0

众所周知,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 是不可接受的。

4

2 回答 2

1

so any one knows how to stop it converting data format?

D'uh, by reading a data format that does not need converting. On-screen framebuffers are typically formated as BGRA and if you want something different the data needs to be converted first.

You could use a FBO with texture/renderbuffer attachments that are in the format expected and render to that.

于 2013-01-18T14:07:49.543 回答
0
于 2013-01-18T19:11:31.237 回答