【发布时间】:2011-05-22 05:26:38
【问题描述】:
我在 Android 中使用 OpenGL ES 来渲染某些图像。渲染框架后,我想复制它。虽然我可以为此使用 FBO,但只有某些设备支持 FBO。对于其他设备,我将不得不使用消耗更多时间的 glReadPixels。由于 glReadPixels 只能从后台缓冲区复制数据,因此只有在复制后才能交换缓冲区,这会影响渲染的响应时间。
有没有办法从frontbuffer中复制数据。这样我就可以在处理结束后立即将图像渲染到屏幕上,然后从前端缓冲区中获取副本。
编辑:在某些设备中,一旦缓冲区与前缓冲区交换,后缓冲区就会被清除。在其他一些设备中,它不会被清除。即使将图像交换到前缓冲区(而不是将其复制到前缓冲区),我也希望图像保持在后缓冲区中。有什么办法可以强制gl即使在交换后也不清除后备缓冲区?
【问题讨论】:
-
为什么你不想在交换之前从后台缓冲区复制?响应时间最多会减慢几毫秒(与人类 300 毫秒的反应时间相比)。
-
没有。实际上,glReadPixels 在 HTC wildfire 等设备中花费了大约 300 毫秒。
-
哇,好吧,那你有一个公平的论点......