gpt4 book ai didi

java - 具有 OpenGL ES 3.1 上下文的 GLSurfaceView

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:23 25 4
gpt4 key购买 nike

我正在使用 OpenGL 开发 Android。我知道如何使用 GLSurfaceView 及其自定义派生类通过 GLSurfaceView 的方法创建 OpenGL ES 2.0 上下文:

setEGLContextClientVersion(2); 

和 OpenGL ES 3.0 上下文:

setEGLContextClientVersion(3); 

如何为 OpenGL ES 3.1 创建上下文?

最佳答案

您不能在创建上下文时显式请求 3.1。根据我的理解,3.1 不作为与 3.0 分开的上下文类型处理。本质上,支持 3.1 的上下文只是一个还支持额外的 3.1 功能的 3.0 上下文。

这意味着您仍然可以使用:

setEGLContextClientVersion(3);

如果您想检查/验证上下文支持的版本,您可以在上下文启动并运行后查询它:

int[] vers = new int[2];
GLES30.glGetIntegerv(GLES30.GL_MAJOR_VERSION, vers, 0);
GLES30.glGetIntegerv(GLES30.GL_MINOR_VERSION, vers, 1);
if (vers[0] > 3 || (vers[0] == 3 && vers[1] >= 1)) {
// We have at least ES 3.1.
}

背景

EGL 的最新版本,即 1.5 [*],实际上确实具有允许指定主要版本和次要版本的上下文创建属性(属性 EGL_CONTEXT_MAJOR_VERSIONEGL_CONTEXT_MINOR_VERSION ). 1.4 及之前的版本只有 EGL_CONTEXT_CLIENT_VERSION,因此它们没有在创建上下文时指定次要版本的机制。

最新发布的 Android 版本是 5.1.1 [*],仍然只支持 EGL 1.4。所以不仅仅是GLSurfaceView不提供接口(interface)的问题。较低的 native 层也不支持指定次要版本。因此,为 3.0 上下文添加 3.1 支持确实是唯一的选择。

[*] 在写这个答案的时候。

关于java - 具有 OpenGL ES 3.1 上下文的 GLSurfaceView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32765757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com