具有 OpenGL ES 3.1 上下文的 GLSurfaceView

2024-04-30

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

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_VERSION and EGL_CONTEXT_MINOR_VERSION)。 1.4 及以下版本仅具有EGL_CONTEXT_CLIENT_VERSION,因此他们没有机制在创建上下文时指定次要版本。

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

[*]当时写下这个答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 OpenGL ES 3.1 上下文的 GLSurfaceView 的相关文章

随机推荐

  • 从 PNG 图像中提取元数据

    我正在尝试从 PNG 图像格式中提取元数据 我正在使用这个库 http code google com p metadata extractor http code google com p metadata extractor 尽管它声称
  • 当函数名称作为字符串传递时调用嵌套函数

    我试图通过将函数名称作为字符串传递然后调用它来访问嵌套函数 例如 参见this https stackoverflow com questions 359788 javascript function name as a string po
  • NavigationUI 无法与底部导航视图实现一起正常工作

    所以我有一个场景 其中我有 5 个带有底部导航的片段 1 主页 2 收件箱 3 搜索 4 通知 5 个人资料 因此 我有另一个名为 BarcodeDetail 的片段 我从 Home Fragment 导航到该片段 首页 gt 条码详情 现
  • bat 文件修改 web.config 设置

    我在 Visual Studio 2013 中创建了一个 Web 应用程序 我的 Web Config 文件中有此 appSetting
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 从 GIF 提取帧到 PNG 时丢失数据?

    当我尝试使用 fraxel 的答案时 http stackoverflow com questions 10269099 pil convert gif frames to jpg 在图像上http 24 media tumblr com
  • pip 相当于 `npm install package --save-dev` 的东西是什么?

    在nodejs中 我可以做npm install package save dev将安装的包保存到包中 如何在 Python 包管理器中实现同样的效果pip 我想将包名称及其版本保存到 例如 requirements pip就在使用类似的东
  • 等待文件关闭的良好而干净的方法[重复]

    这个问题在这里已经有答案了 可能的重复 等待文件在 NET 中解锁 https stackoverflow com questions 50744 wait until file is unlocked in net 我有一个打开的文件 例
  • 无法使用 vcpkg 清单引用 poco[sqlite3]

    我正在使用 vcpkg 的清单功能来引用我的项目所具有的依赖项 我想使用 Poco 的 SQLite3 包装器 但我不知道如何在 vcpkg json 文件中引用它 当我使用poco sqlite3 vcpkg 给我一个错误 指出我的清单文
  • HTML5 气泡消息

    输入字段有一个新的 HTML5 属性required提交表单且字段为空时会弹出气泡消息 有什么办法可以弹出带有不同文本的相同气泡吗 我想将它用于不同的验证 不仅仅是它是否为空 以下是 Chrome 中此气泡 弹出窗口 的屏幕截图 HTML5
  • 如何在记事本++中重复该行?

    如何在记事本 中重复该行 例如我有以下输入 a 01 a 02 a 03 a 04 我希望它成为 a 01 a 01 a 02 a 02 a 03 a 03 a 04 a 04 所以每一行都应该显示twice 打开搜索对话框并写入 Find
  • 即使未指定 @Load,Objectify 也会在 Ref 后面加载对象

    我有一个引用用户对象的帐户对象 Cache Entity public final class Account Id Long id Index private Ref
  • 在 Google Chrome/Chromium 和 Safari 中拖放文件上传?

    Firefox 3 6 中可以实现拖放文件上传 给出类似的东西 Firefox 3 6 中的本机拖放文件上传 https stackoverflow com questions 2121018 native drag drop file u
  • 如何在代码中设置iPhone标签栏图标?

    我对几个不同的视图使用相同的 ViewController 当为特定视图实例化 ViewController 时 是否有一种简单的方法可以通过代码指定选项卡栏图标 yourViewController tabBarItem UITabBar
  • 如何使用Java泛型来避免强制转换?

    对于查询 提出于link https stackoverflow com questions 26192111 how to compare objects with different types 建议使用 Java 泛型以避免难以评估项
  • Angular 2 根据角色/声明显示/隐藏组件/零件

    我试图了解有关角度应用程序安全方面的最佳实践 可以说我有一个包含模型详细信息屏幕的视图 根据给定用户的角色 权限 例如 从 jwt 声明中获得 我希望能够做的是 根据用户是否具有特定角色的事实启用 禁用某些输入字段 因此 实际上有些角色可以
  • 如何在 Swift 中使用 UILocalNotification

    我正在尝试弄清楚如何快速设置 UILocalNotification 但我运气不佳 我正在尝试这个 var notification UILocalNotification notification timeZone NSTimeZone
  • 本地化 html 文档(事后看来)

    我正在用 PHP 构建一个 Web 应用程序 我已经决定 在整个过程中 以不同的语言提供该应用程序 我的问题是这样的 我不想费力地浏览模板文件中的所有 HTMl 代码来查找需要用动态生成的 lang 变量替换的 单词 有没有一个工具可以突出
  • 我可以在 Azure Pipelines 中对变量进行子字符串化吗?

    我正在寻找一种方法来定义我的变量azure pipelines yml我可以在其中子串的文件 Build SourceVersion gt 仅使用前 7 个字符 文档中似乎没有可以执行此类字符串操作的内置函数 我有什么遗漏的吗 我的另一种方
  • 具有 OpenGL ES 3.1 上下文的 GLSurfaceView

    我正在使用 OpenGL 开发 Android 我知道如何使用GLSurfaceView及其自定义派生类 使用以下方法创建 OpenGL ES 2 0 上下文GLSurfaceView setEGLContextClientVersion