问题标签 [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 投票
2 回答
1799 浏览

android - 我的 Android Eclipse LogCat 中的数千条 EGL 消息

我是 Android 开发的新手,到目前为止,我的应用程序进展顺利。今天突然间,当我通过 USB 插入 Nexus 4 以调试应用程序时,我收到了数以万计的libEGL标签错误,这些错误占据了日志中的所有空间 - 使我无法看到任何有意义的消息。

这些libEGL错误似乎与我的应用程序无关,因为当我卸载我的应用程序并插入我的 Nexus 4 时,我仍然看到这些错误。它们如下所示:

我不知道这些错误是从哪里产生的。我的 Log.v 和 Log.i 调用根本没有显示在日志中。我想也许有些东西配置错误 - 所以我做了这里的步骤

Logcat 不显示我的日志调用

但这并没有帮助。提前致谢。

--- 编辑 - 我最终重新启动了我的手机并且错误消息停止了。如果有人有想法,我仍然很想知道为什么会这样。

0 投票
1 回答
2403 浏览

android - GLSurfaceView 如何使用我的 EGLDisplay、EGLContext 和 eglSurface?

我想交替渲染一个使用 eglCreateWindowSurface 创建的 EGLSurface 和一个使用 eglCreatePbufferSurface 创建的 EGLSurface,重用 EGLDisplay 和 EGLContext。当我希望结果对用户可见时,我正在使用 GLSurfaceView,但我不知道如何初始化它以使用我的 EGLDisplay、EGLContext 和 EGLSurface。我想使用 GLSurfaceView.EGLWindowSurfaceFactory,但我看到它的覆盖方法 createWindowSurface 已经将这些变量作为输入参数,所以我想你已经由 GLSurfaceView 创建。怎么做到呢?

0 投票
1 回答
10362 浏览

opengl-es - OpenGL ES 中 YUV420 到 RGB 转换的纹理

我必须使用 Freescale iMX53 处理器(OpenGL ES 2.0,EGL)上的 AMD GPU 将 YUV420P 图像转换并显示为 RGB 颜色空间。Linux 操作系统,没有 X11。为了实现这一点,我应该能够创建一个包含 YUV420P 数据的适当图像:这可以是 YUV420P/YV12 图像类型或 3 个简单的 8 位图像,每个分量(Y、U、V)一个。

glTexImage2D 被排除在外,因为它很慢,YUV420P 帧是实时视频解码@25FPS 的结果,使用 glTexImage2D 我们无法保持所需的帧速率。

还有一个替代方案:eglCreateImageKHR/glEGLImageTargetTexture2DOES。唯一的问题是这些不能处理任何适合 YUV420/YV12 数据的图像格式。

glEGLImageTargetTexture2DOES(...) 失败。如果我将“attribs”中的相应行更改为:

EGL_IMAGE_FORMAT_FSL、EGL_FORMAT_RGB_565_FSL、

然后可以将图像分配给 OpenGL ES 纹理,但不适合保存 8 位数据 (Y/U/V) 或 YUV420/YV12 数据。搜索网络(包括飞思卡尔社区论坛)我还没有找到任何解决方案。

如何创建一个图像:

  • 快速创建;
  • 最终可以分配给一个已经存在的缓冲区(给定物理地址或虚拟地址);
  • 可用于片段/顶点着色器程序中进行 YUV --> RGB 转换;

约束是为了避免由于性能原因不必要的 memcpy(...)s。

0 投票
1 回答
5860 浏览

android - WorkLight - 未找到合适的 EGL 配置

我在 worklight 中有一个应用程序,在 android 上运行该应用程序时出现错误。如下日志:

0 投票
1 回答
1246 浏览

opengl-es - SGX 530 上的 eglSwapBuffer 很慢

我们有一个嵌入式系统,它使用基于 TI 8168 的硬件。该 SOC 使用 SGX 530 作为其 GPU。我们在这个平台上运行 Android 4.0.3。我们发现 Android 应用程序的帧速率似乎低于在类似功率的平板电脑上运行的相同应用程序。

在对 Android Activity、Android 平台代码中的各种功能进行计时后,我们注意到 eglSwapBuffer() 大部分时间都需要 45+ 毫秒。我在各种论坛上看到的是它不应该超过 16ms。帧缓冲区的分辨率为 1920x1080。

我感谢任何解决此瓶颈的建议。

驱动程序版本(即 /proc/pvr/version 内容)

版本 blaze_android_sgx_ogles1_ogles2_GPL sgxddk 18 1.8@789263 (release) omap4430_android
系统版本字符串:SGX 修订版 = 1.2.5

/system/lib/egl 文件夹中 egl.cfg 的内容:

0 0 安卓
0 1 POWERVR_SGX530_125

/system/lib/egl 文件夹的内容

egl.cfg
libEGL_POWERVR_SGX530_125.so
libGLES_android.so
libGLESv1_CM_POWERVR_SGX530_125.so
libGLESv2_POWERVR_SGX530_125.so

/system/bin/sgx 文件夹中 rc.pvr 脚本的内容

Surfaceflinger 出现时会记录:

0 投票
1 回答
600 浏览

opengl-es - 使用 eglCreateImageKHR 的两个图像的非幂

机器是 Freescale iMX53,我的程序通过这样的调用创建了许多图像:

稍后这样的调用会获取分配图像的详细信息(物理/虚拟地址,步幅):

iMX53 运行 EGL 1.4 和 OpenGL ES 2.0。在我看来(通过调查步幅值) eglCreateImageKHR(...) 只能分配 32 的倍数的图像宽度,这在我的情况下是绝对糟糕的。不幸的是,由于它们造成的性能损失,我不能使用 glTexImage2D 和朋友。

我可以以某种方式使 eglCreateImageKHR(...) 避免使用 32 字节的倍数,甚至强制它使用 4/8/16 字节对齐吗?16 字节对齐对我来说也足够了。我没有使用 Android,只是一个 2.6.35.4 内核和带有自定义 linux 发行版的 OpenGL ES / EGL 库。

0 投票
2 回答
709 浏览

android - 在 Android 上丢失上下文时如何保存 OpenGL 纹理

我们的游戏要求从小图像动态构建几个大纹理,并且我们不保留纹理的数据副本,我们只是使用 OpenGLglTexSubImage2d来更新实际纹理。

当按下 Back 或游戏失去焦点时,我们希望将这些纹理保存到 ram,因此如果用户随后返回游戏,我们可以在onSurfaceCreated. 我们已经从“磁盘”重新加载所有静态纹理。

然而,事实证明很难找到我们可以从哪里得到消息以知道我们即将失去 EGL 上下文。如果我们在主活动中设置一个标志,onBackPressed然后在主渲染循环中检查该标志,我们可以将纹理保存在那里,但我们不能从主活动中访问纹理,所以将调用放在主活动的onStop回调中也是如此晚的。没有后续的渲染循环来保存纹理,因为到那时它已经停止了。我们需要这样做,因为onStop除了按下后退按钮之外,还有其他调用方式。

据说我不能拖延onStop再获得一个“渲染”。还有其他想法吗?

0 投票
1 回答
552 浏览

ios - eglSwapBuffers(...) 是否应该阻塞直到达到最小视频帧数?

我在 iOS 的用户空间中实现 EGL 1.4。eglSwapBuffers(...)状态规范post the color buffer to a window

eglSetSwapInterval(EGLDisplay dpy, EGLint interval)状态规范The parameter *interval* specifies the minimum number of video frames that are displayed before a buffer swap will occur

我的问题是:

a) 是否应该eglSwapBuffers(...)阻塞直到达到最小帧数?

b) 如果对 a) 的回答是否定的,则应eglSwapBuffers(...)返回而不将颜色缓冲区发布到窗口并返回 EGL_TRUE。

c) 如果对 b) 的回答是否定的,那么应该是什么?

问候,

0 投票
0 回答
218 浏览

macos - 如何在 OS X 上编译需要 EGL 的应用程序

我有一个大型第三方库,我需要让它在 OS X 上运行。该库出于某些目的(纹理读取 AFAIR)使用 EGL,但系统中没有 libEGL。我实际上并不想重写部分并删除 EGL 依赖项。

有什么方法可以让它工作吗?

0 投票
0 回答
5950 浏览

android - Android MediaCodec:EGL_BAD_SURFACE,eglSwapBuffers:EGL 错误:0x300d

我在 bigflake.com/mediacodec 中遵循 DecodeEditEncodeTest.java 的示例 我的应用程序中唯一的区别是我解码了一个真实的视频文件(而不是内存中的块数据),并编码为一个真实的视频文件(而不是内存中的块数据)

日志显示在执行 swapBuffers 时发生错误。

从错误信息来看,什么样的可能性可以对错误负责?

[更新 1] 在我的代码的原始版本中,我使用所需的参数设置了编码器。现在我使用来自 DecodeEditEncodeTest.java 的相同代码来确定参数。代码如下:

当程序执行 inputFormat.getInteger(MediaFormat.KEY_BIT_RATE) 时,它简单地退出,进入 finally 块。它不能被“catch”捕获,所以我无法打印出错误信息。

[更新 2] 好的,我找到了原因。未正确创建 outputSurface。[Update 1] 中的问题仍然成立。