OpenGL ES 3.0为Android中的glReadPixels带来性能提升

时间:2013-09-10 08:21:15

标签: android opengl-es glreadpixels pbo opengl-es-3.0

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

  1. glReadPixels()的第五个参数指定为 GL_BGRA ,以避免不必要的混乱。
  2. 使用 PBO 作为this提及。
  3. 为了验证,我更新了最新的Android SDK和ADT,并尝试使用OpenGL ES 3.0。但是,我找不到我预期的GL_BGRA定义,而且我不知道如何使用glMapBuffer()。我错过了什么吗?

    总结一下,

    • 除了使用glReadPixels()之外,还有其他更快的方式来访问framebuffer吗?
    • 如何在Android上使用OpenGL ES 3.0的GL_BGRA和PBO?

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

1 个答案:

答案 0 :(得分:0)

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

  2. 是的,glMapBufferRange是继续使用OpenGL ES 3.0的方法。根据您的评论,看起来您的通话是正确的。根据{{​​3}}和spec,glMapBufferRange不应该生成GL_INVALID_ENUM错误,因此我认为其他错误在这里。确保先前的调用不会生成错误。