【问题标题】:How to read from front buffer using glReadPixels?如何使用 glReadPixels 从前端缓冲区读取?
【发布时间】:2011-05-22 05:26:38
【问题描述】:

我在 Android 中使用 OpenGL ES 来渲染某些图像。渲染框架后,我想复制它。虽然我可以为此使用 FBO,但只有某些设备支持 FBO。对于其他设备,我将不得不使用消耗更多时间的 glReadPixels。由于 glReadPixels 只能从后台缓冲区复制数据,因此只有在复制后才能交换缓冲区,这会影响渲染的响应时间。

有没有办法从frontbuffer中复制数据。这样我就可以在处理结束后立即将图像渲染到屏幕上,然后从前端缓冲区中获取副本。

编辑:在某些设备中,一旦缓冲区与前缓冲区交换,后缓冲区就会被清除。在其他一些设备中,它不会被清除。即使将图像交换到前缓冲区(而不是将其复制到前缓冲区),我也希望图像保持在后缓冲区中。有什么办法可以强制gl即使在交换后也不清除后备缓冲区?

【问题讨论】:

  • 为什么你不想在交换之前从后台缓冲区复制?响应时间最多会减慢几毫秒(与人类 300 毫秒的反应时间相比)。
  • 没有。实际上,glReadPixels 在 HTC wildfire 等设备中花费了大约 300 毫秒。
  • 哇,好吧,那你有一个公平的论点......

标签: android opengl-es


【解决方案1】:

使用

将读取切换到前端缓冲区
glReadBuffer(GL_FRONT);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多