GLSurfaceView.Renderer
接口(interface)包含方法onSurfaceCreated(GL10 gl, EGLConfig config)
。我知道 GL10
参数基本上已过时,但 EGLConfig
参数有何用途?鉴于it declares no public properties or methods,它有什么意义? ?这是其他东西的论据吗?
最佳答案
虽然 EGLConfig
类没有有用的方法,但您仍然可以使用该对象来获取配置的属性。这是通过 EGL10
class 完成的,它具有采用 EGLConfig
实例作为参数的方法。
现在,下一个问题是如何获取 EGL10
实例。为此,您可以使用 EGLContext
上的静态 getEgl()
方法。该方法返回一个 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()
获得相同的值,但代码 fragment 显示了如何使用 config
进行 EGL 调用。
如果您想控制使用哪个配置,您可以调用 GLSurfaceView
上的 setEGLConfigChooser()
重写之一。更简单的允许您指定颜色、深度和模板缓冲区所需的位数。更灵活的版本允许您传入 EGLConfigChooser
接口(interface)的实现,您可以在其中实现自己的代码来选择您喜欢的配置。
关于android - onSurfaceCreated 中 EGLConfig 的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34550913/