在Android上使用OpenGL ES 2.0绘制到backbuffer

时间:2013-06-16 18:09:09

标签: android opengl-es-2.0 framebuffer picking

我想使用颜色代码为2D应用程序实现简单的拾取。 到目前为止,我通过调用GLES20.glDrawElements()来渲染我的对象 我只能根据要求进行渲染。

现在,我已经阅读了很多关于这个主题的OpenGL教程,但我找不到OpenGL ES的单一教程,而且我也无法转换/传输这些教程。

所以,我有两个问题。 如何启用双缓冲?因为据我所知,我只有一个缓冲区没有。 这些缓冲区会自动交换吗?我猜不是,因为这是一种方法。 如何专门渲染后备缓冲区?我只需要做一次,所以每当我渲染一个新框架时都会这样做。

这是我第一次询问stackoverflow之后,我已经找到了近4年来我所有问题的答案,所以请保持温和:)

1 个答案:

答案 0 :(得分:2)

如果要渲染EGLSurface,默认情况下应启用双缓冲。如你所说,缓冲区不会自动交换。如果您正在使用SDK,则在退出onDrawFrame后应进行交换。在引擎盖下应该调用eglSwapBuffers。

由于默认情况下存在双缓冲,因此默认情况下您也将渲染到后备缓冲区(否则,您的半渲染帧将显示在屏幕上)。

听起来你有很多选择;包括1)在需要时渲染到后台缓冲区,检索颜色代码,然后清除缓冲区并继续正常的帧更新,2)渲染到屏幕外缓冲区,即帧缓冲区对象。