GLSurfaceView.Renderer
接口包括方法onSurfaceCreated(GL10 gl, EGLConfig config)
。我知道GL10
参数已经过时了,但是EGLConfig
参数用于什么呢?考虑到it declares no public properties or methods,它的意义是什么?是否有其他论点?
最佳答案
尽管EGLConfig
类没有有用的方法,但是您仍然可以使用该对象来获取配置的属性。这是通过EGL10
class完成的,该方法具有将EGLConfig
实例作为参数的方法。
现在,下一个问题是如何获取EGL10
实例。为此,请在getEgl()
上使用静态EGLContext
方法。该方法返回一个EGL
实例,您可以将其强制转换为EGL10
。
总而言之,整个事情看起来像这样:
EGL10 egl = (EGL10)EGLContext.getEGL();
EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
int[] val = new int[1];
egl.eglGetConfigAttrib(dpy, config, EGL10.EGL_DEPTH_SIZE, val);
int depthBits = val[0];
此代码检索深度缓冲区中的位数。对于此特定示例,您当然也可以使用
glGetIntegerv()
获得相同的值,但是代码片段显示了如何使用config
进行EGL调用。如果要控制使用哪个配置,请在
setEGLConfigChooser()
上调用GLSurfaceView
替代之一。较简单的位允许您指定要用于颜色,深度和模板缓冲区的位数。更加灵活的版本允许您传入EGLConfigChooser
接口的实现,在其中您可以实现自己的代码以选择首选的配置。