问题标签 [egl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - “WSEGL_WaitNative:无法识别的引擎”错误的可能原因是什么?(安卓 NDK)
我编写的一个 Android 应用程序在一个用户的 Galaxy Nexus 上运行时会产生以下错误消息:
奇怪的是,在其他几个设备上运行时,它不会生成此错误消息。有谁知道这个错误的一些可能原因?谷歌没有提供任何对我有用的东西。我将尝试整理一个简单的测试用例并在此处发布(该项目相当大,因此很难确定要发布的相关代码段)。
作为参考,以下是应用程序的完整 logcat 输出:
android - ICS 上的 eglCreateWindowSurface,以及从 2D 切换到 3D
我正在尝试在 Android ICS 上制作基于 NDK 的游戏。它在 Honeycomb 和 Gingerbread 上运行良好。
游戏使用一些 2D 渲染,一些 3D 渲染,在执行的不同阶段在两者之间切换。(由于第三方代码,这是不可协商的。)我们使用ANativeWindow_lock()
/ANativeWindow_unlockAndPost()
进行 2D 渲染,而eglCreateWindowSurface()
/ gl*()
/eglSwapBuffers()
用于 3D 渲染。
在 Honeycomb 和 Gingerbread 上,这一切都很好。在 ICS 上,eglCreateWindowSurface()
失败并在日志中显示以下消息:
查看源代码似乎很明显eglCreateWindowSurface()
失败了,因为有些东西打开了本机窗口以进行 2D 渲染,并且它不会让我在不首先释放表面的情况下将其更改为 3D。但是,ANativeWindow API 似乎没有任何明显的方法可以做到这一点。
有没有其他人遇到过这个问题,解决方案是什么?
更新
因此,我重写了我的 2D 渲染代码以改用 OpenGL 基元(将后缓冲区上传到纹理,通过一对三角形渲染纹理,交换缓冲区)。这在一定程度上起作用。现在发生的事情是 2D 渲染工作正常;然后我破坏了表面,创建了一个新的表面以准备 3D 渲染,第二次调用eglCreateWindowSurface()
失败。这一次,与:
...它会引发 EGL 错误AEGL_BAD_NATIVE_WINDOW
。
请注意,新曲面的创建属性与旧曲面完全相同。我什至尝试确保在两次调用之间调用eglTerminate()
/ 。eglInitialize()
eglCreateWindowSurface()
我可以精确地使用每个 ANativeWindow 一次吗?如果是这样,那难道不会通过 Khronos 的 EGL 一致性测试吗?那么有没有办法让 NativeActivity 重新创建窗口呢?
更新更新
eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)
事实证明,最后一个问题是由于我在破坏上下文和表面之前未能调用造成的。这导致破坏被延迟,直到线程解除上下文和表面的绑定,当然不是,因此导致调用eglCreateWindowSurface()
合法失败(您不能在同一个本机窗口上有两个窗口表面)。
这有点违反直觉,因为人们会假设调用eglTerminate()
会破坏所有 EGL 资源,但规范允许。被警告!
android - OPEN GL ES 和 EGL 库之间的混淆
我正在阅读 android 源代码,因为我没有得到 OPEN GL ES
库的作用和作用 EGL library
。?
这两个库之间有什么关系吗?
我查看了http://www.khronos.org/opengles/documentation/opengles1_0/html/ 但仍然没有。
opengl-es - 如何使用 OpenES 2.0 + X11 创建一个窗口并用颜色填充它?
我尽我所能用谷歌搜索,但我一无所获。
我想做的事:
- 使用 X11 (Xlib) 创建一个窗口并显示它
- 使用 OpenGL ES 2.0 用颜色填充窗口
对于我的 ArchLinux 上的 OpenGL ES 2.0 支持,我使用 MESA。我知道如何使用 Xlib 创建一个简单的 X 窗口,我对 EGL 和 OpenGL ES 有基本的了解,但我不明白如何结合使用它们(X11 + EGL + OpenGL ES 2.0)。
如果有人至少写了一个关于如何准备 X 窗口并将其与 OpenGL ES 2.0 正确连接并开始渲染的简短代码示例,我会非常感谢。
android - 类型“EGL_DEFAULT_DISPLAY”无法解析错误,而常量已明确定义
我正在开发适用于 Android 2.3.3 的本机活动应用程序。我已经从代码示例中复制了代码,我已经设置了包含路径,但是 Eclipse (Indigo) 仍然找不到这个常量。
但是编译器没有显示错误:
任何想法为什么?
android - android上的libgdx:egl ERROR 12292
我在 Eclipse 中用 libgdx 创建了一个简单的游戏。游戏在桌面模式下启动时运行良好。但是当实际在我的设备上运行它时,我得到了上述错误。屏幕保持黑色,游戏无法运行。
c++ - 在 Qt Creator 中链接 EGL?
我在 Qt Creator 的 MinGW 文件夹中有 EGL。我想知道 EGL 的正确链接器标志是什么。不幸的是,-lEGL
并-legl
没有工作。
LIBS += -legl -lGLESv2 #<-- does not compile
有解决方法吗?注意:关于 OpenGL 背后的“Qt 方式”,我不打算将 EGL 与 Qt 一起使用。我只是将 Qt Creator 用作其核心框架等;我计划运行我从arm 网站下载的模拟器,以运行我正在做的事情。
谢谢。
android - eglWaitNative 的参数应该是什么?(Android SDK, EGL10)
我在互联网上找到的示例似乎使用 EGL10.EGL_NATIVE_RENDERABLE 作为第一个参数,而使用“null”作为 eglWaitNative 的第二个参数。例如:
但是,在 Galaxy Nexus 上,这会导致以下错误消息向 logcat 输出发送垃圾邮件:
似乎第一个参数一定是错误的,因为 API 将它列为一个名为“engine”的 int,这似乎与错误消息“unrecognized engine”相匹配。如果是这样,我应该改用什么?如果第二个参数是问题,那么根据 API,它是“对象”类型,并且表示描述渲染目标的特定于平台的对象。不过,我似乎无法弄清楚除了“null”之外还有什么可以去这里。我完全偏离轨道了吗?
linux - Linux 上的 EGL 支持
我有一个跨平台应用程序,我想在 Linux 上编译。问题是二进制 nVidia 驱动程序不公开EGL接口(应用程序使用)。因此,为了尽可能少地更改应用程序,我想知道是否有一个包装器,例如将GLX映射到EGL。
android - EGL 在 Linux 上工作,但在 Android 上不工作
我有 EGL/GLES 2.0 代码,我尝试在 Linux(通过 Mesa)和 Android(即将推出 iOS)上运行。在 Linux 上,它工作正常并且呈现出预期的效果。在 Android(手机、平板电脑和模拟器 - 所有 4.01)上运行它可以正常运行,但不显示任何内容(屏幕保持黑色)。所有 3 的代码 99% 相同 - 对 Android 进行了一些特殊处理。遵循我的 EGL 属性:
遵循 EGL 创建代码:
有人可以阐明,要测试什么或如何找到问题吗?
编辑:
我修复了一些其他错误,现在它在 Android 模拟器和HP 触摸板(Cyanogenmod 9 alpha)中运行良好,但仍然导致我的三星 Galaxy S1与Cyanogenmod 9 *sigh*出现黑屏。