问题标签 [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.

0 投票
1 回答
526 浏览

android - “WSEGL_WaitNative:无法识别的引擎”错误的可能原因是什么?(安卓 NDK)

我编写的一个 Android 应用程序在一个用户的 Galaxy Nexus 上运行时会产生以下错误消息:

奇怪的是,在其他几个设备上运行时,它不会生成此错误消息。有谁知道这个错误的一些可能原因?谷歌没有提供任何对我有用的东西。我将尝试整理一个简单的测试用例并在此处发布(该项目相当大,因此很难确定要发布的相关代码段)。

作为参考,以下是应用程序的完整 logcat 输出:

0 投票
2 回答
6229 浏览

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 资源,但规范允许。被警告!

0 投票
5 回答
3339 浏览

android - OPEN GL ES 和 EGL 库之间的混淆

我正在阅读 android 源代码,因为我没有得到 OPEN GL ES库的作用和作用 EGL library。?

这两个库之间有什么关系吗?

我查看了http://www.khronos.org/opengles/documentation/opengles1_0/html/ 但仍然没有。

0 投票
2 回答
4394 浏览

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 正确连接并开始渲染的简短代码示例,我会非常感谢。

0 投票
2 回答
2747 浏览

android - 类型“EGL_DEFAULT_DISPLAY”无法解析错误,而常量已明确定义

我正在开发适用于 Android 2.3.3 的本机活动应用程序。我已经从代码示例中复制了代码,我已经设置了包含路径,但是 Eclipse (Indigo) 仍然找不到这个常量。

但是编译器没有显示错误:

任何想法为什么?

0 投票
0 回答
348 浏览

android - android上的libgdx:egl ERROR 12292

我在 Eclipse 中用 libgdx 创建了一个简单的游戏。游戏在桌面模式下启动时运行良好。但是当实际在我的设备上运行它时,我得到了上述错误。屏幕保持黑色,游戏无法运行。

0 投票
1 回答
1465 浏览

c++ - 在 Qt Creator 中链接 EGL?

我在 Qt Creator 的 MinGW 文件夹中有 EGL。我想知道 EGL 的正确链接器标志是什么。不幸的是,-lEGL-legl没有工作。

LIBS += -legl -lGLESv2 #<-- does not compile

有解决方法吗?注意:关于 OpenGL 背后的“Qt 方式”,我不打算将 EGL 与 Qt 一起使用。我只是将 Qt Creator 用作其核心框架等;我计划运行我从arm 网站下载的模拟器,以运行我正在做的事情。

谢谢。

0 投票
1 回答
568 浏览

android - eglWaitNative 的参数应该是什么?(Android SDK, EGL10)

我在互联网上找到的示例似乎使用 EGL10.EGL_NATIVE_RENDERABLE 作为第一个参数,而使用“null”作为 eglWaitNative 的第二个参数。例如:

但是,在 Galaxy Nexus 上,这会导致以下错误消息向 logcat 输出发送垃圾邮件:

似乎第一个参数一定是错误的,因为 API 将它列为一个名为“engine”的 int,这似乎与错误消息“unrecognized engine”相匹配。如果是这样,我应该改用什么?如果第二个参数是问题,那么根据 API,它是“对象”类型,并且表示描述渲染目标的特定于平台的对象。不过,我似乎无法弄清楚除了“null”之外还有什么可以去这里。我完全偏离轨道了吗?

0 投票
2 回答
1150 浏览

linux - Linux 上的 EGL 支持

我有一个跨平台应用程序,我想在 Linux 上编译。问题是二进制 nVidia 驱动程序不公开EGL接口(应用程序使用)。因此,为了尽可能少地更改应用程序,我想知道是否有一个包装器,例如将GLX映射到EGL

0 投票
1 回答
3314 浏览

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 S1Cyanogenmod 9 *sigh*出现黑屏。