android - onSurfaceCreated 中 EGLConfig 的用途?

标签 android opengl-es

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/

相关文章:

java - 无法在 Android 的 Assets 文件夹中检索文件

iphone - 如何在 Core Graphics 中生成 RGBA 图像?

html - “构造函数”的参数太多 [顶点着色器]

android - 如何解决错误 onClientConnectionState() - status=22 clientIf=7 in BLE

android - 在 ActionBarSherlock 中按下刷新按钮时如何显示不确定的进度条?

Android:在库项目中访问 c​​amera.startPreview()

java - 在Android OpenGL中渲染简单的正方形

android - 是否有屏幕尺寸大于 GL_MAX_TEXTURE_SIZE 的 Android 设备?

opengl-es - 将 WebGL 2 中的像素读取为 Float 值

android - 在 Animated Vector Drawable 中为 "fillColor"属性设置动画