这是 my original Question 的后续,它可能太宽泛了(而这个可能太具体了,但也许我可以应用牛顿法)。
我的具体情况是:OpenGL ES 2.0,在 Android 上,仅使用 Java(无 JNI/ native 代码)。
我试图了解 EGL 和 Android 的 GLES 实现如何协同工作(或不协同工作)。我遇到了麻烦,因为 EGL 接口(interface)(API)似乎不太适合 Android 的以 Java 为中心、基于 Activity 的操作系统。
作为一个具体的例子:我已经继承了 GLSurfaceView 并使用 XML 布局创建了一个实例,然后使用 findViewById()
来检索引用。使用这种方法,我让 textured triangle example 工作(Android 2.2 上的 GLES 2.0,API 级别 8)。此示例不使用 EGL。作为学习练习,我想使用 EGL 重写它。
我能找到的所有示例都使用 eglGetDisplay()
和 eglInitialize()
,并在油腻的黑烟中创建上下文。我发现的所有示例、引用资料和问题都不适用于 ES2.0/EGL/Android/Java。我完全错过了什么吗? This question 是相关的(我认为)但没有任何响应,the ES 2.0 Programming Guide 中使用的示例是一个独立的 C 实现。
最佳答案
真的没有什么 Android 特定于 EGL。当你创建一个 EGL 窗口表面 (eglCreateWindowSurface) 时,你给它一个 Surface 或一个 SurfaceHolder(SurfaceView 会给你。)这意味着你几乎可以从 C、C++ 或任何其他语言复制/粘贴一个 EGL 示例并拥有它在几分钟内在 Android 上工作。我就是这样做的;-)
更新:我刚刚阅读了您的另一条消息。您需要 EGL 来初始化 GLES 上下文。
关于android - 如何获取特定 GLSurfaceView 的 EGL 显示/上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6510964/