4

我找到了一些通过 OpenGL ES 3.0 加速 glReadPixels 的方法,但我不确定它是否有效。

  1. 将glReadPixels()的第五个参数指定为GL_BGRA以避免不必要的混乱。
  2. 如上所述使用PBO_

为了验证,我更新到最新的Android SDK和ADT,并尝试使用OpenGL ES 3.0。但是,我找不到GL_BGRA我预期的定义,也不知道如何使用glMapBuffer(). 我错过了什么吗?

总结一下,

  • 除了使用 glReadPixels() 之外,还有其他更快的方法来访问帧缓冲区吗?
  • 如何在 Android 上通过 OpenGL ES 3.0 使用 GL_BGRA 和 PBO?

如果有人知道,请指出我。一些代码片段会更好。提前致谢。

4

1 回答 1

1
  1. 并不真地。我不知道您是否会通过使用 BGRA 格式获得性能提升,但值得一试。在 ES 2.0 中,GL_BGRA 只能通过扩展名EXT_read_format_bgra使用,因此您需要使用枚举 GL_BGRA_EXT,显然它在 OpenGL ES 3.0 中也是一样的。

  2. 是的,glMapBufferRange 是使用 OpenGL ES 3.0 的方式。根据您的评论,您的电话看起来是正确的。根据规范手册页, glMapBufferRange 不应该产生 GL_INVALID_ENUM 错误,所以我认为这里还有其他问题。确保错误不是由较早的调用生成的。

于 2013-09-13T05:57:24.227 回答