使用OpenGL ES 1.0在Android上进行屏幕外渲染的选项?

时间:2011-02-10 09:00:44

标签: android opengl-es

我正在努力实现我正在为Android编写的OpenGL游戏的选择。它使用“独特颜色”方法将每个可触摸对象绘制为每个对象独有的纯色。然后,用户输入在触摸位置读取glReadPixels()。我已经完成了着色工作,并且glReadPixels工作,但我无法将“颜色”渲染与主实际渲染分开,这使glReadPixels的使用变得复杂。

据说使用它的技巧是将第二个场景(用于输入)渲染到屏幕外缓冲区,但这似乎有点问题。我已经调查过使用OpenGL ES1.1 FBO作为屏幕外缓冲区,但似乎我的手机(三星Galaxy S Vibrant(2.2))不支持FBO。我不知道如何正确渲染这个场景(并在其上运行glReadPixels)而没有用户见证它。

任何关于如何进行此类屏幕外渲染的想法都可以吗?

1 个答案:

答案 0 :(得分:4)

如果不支持FBO,您可以随时使用渲染到正常的后台缓冲区。

典型用法是:

  • 清除后台缓冲区
  • 绘制“color-as-id”对象
  • 清除后台缓冲区
  • 画正常
  • SwapBuffers

第二个清除将确保拣选代码不会显示在最终图像上。