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接口的实现,在其中您可以实现自己的代码以选择首选的配置。

10-08 16:12