问题标签 [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 回答
2036 浏览

opengl-es - EGL/OpenGL ES/切换上下文很慢

我正在开发一个由多个“框架”组成的 OpenGL ES 2.0 应用程序(使用 Windows 上的angleproject 进行开发)。

每个框架都是一个独立的应用程序,不应干扰周围的框架。帧是使用 OpenGL ES 2.0 绘制的,由在该帧内运行的代码。

我的第一次尝试是为每个帧分配一个帧缓冲区。但是有一个问题 - OpenGL 的内部状态在绘制一帧时发生了变化,如果下一帧没有全面重置每个已知的 OpenGL 状态,则可能存在副作用。这违背了我的要求,即每一帧都应该被隔离并且不会相互影响。

我的下一个尝试是每帧使用一个上下文。我为每一帧创建了一个独特的上下文。我正在使用共享资源,以便我可以 eglMakeCurrent 到每个帧,将每个渲染到自己的帧缓冲区/纹理,然后 eglMakeCurrent 回到全局,将每个纹理组合到最终屏幕。

这在隔离实例方面做得很好,但是.. eglMakeCurrent非常慢。只需 4 个就可以使渲染屏幕需要一秒钟或更长时间。

我可以采取什么方法?有没有一种方法可以加快上下文切换,或者通过以某种方式保存每帧的 OpenGL 状态来避免上下文切换?

0 投票
1 回答
1872 浏览

android - 位图纹理未显示在 Android 的帧缓冲区表面中

我正在尝试使用新的 EffectFactory/Effect 为屏幕外的图像添加效果(即帧缓冲区)。我查看了 SDK 中提供的HelloEffects.java 示例,并且我已经尝试过了,它可以工作。除了它显然使用 GLSurfaceView 而这不是我想要的。

所以我使用了tests/effect/src/android/effect/cts/GLEnv.java来设置 EGL 的东西,我还从 HelloEffects 示例中获取了 TextureRenderer.java 和 GLToolbox。把它们全部捣碎,我得到了下面的代码。

(附带说明一下,我还尝试了 tests/media/src/android/media/cts/OutputSurface.java 来设置 EGL 的东西,我得到了完全相同的结果。)

当我运行它时,我得到的图像只是统一的蓝色。这对应于我用蓝色做的 glClear。这至少在某种程度上证明了像素正在渲染到帧缓冲区,glReadPixels 正在查看这些像素并且位图输出正在工作。

但是为什么纹理没有显示出来?原始纹理和应用效果的纹理均未显示。也没有检测到 GL 错误。

我已经将代码缩减为一个可以复制/粘贴到 Eclipse 中并运行的单个文件工作示例。显然根据您的需要修改输入和输出图像路径。

在 Nexus 10 / Android 4.3 以及模拟器上测试。结果相同。

0 投票
3 回答
3443 浏览

virtual-machine - QtQuick 应用程序无法在 VMWare(虚拟机)上运行

构建系统:

  • Qt Creator 2.7.2 基于 Qt 5.1.0(32 位)于 2013 年 7 月 2 日构建
  • Qt 5.1.0 MSVC2010 32 位(角度)
  • 适用于 Windows 7 的 Microsoft Windows SDK (7.1.7600.0.30514)

环境:

  • 视窗 7 (VMWare)

问题: 我收到的新 Qt Quick 2 应用程序(内置元素)项目将无法运行:

我相信这是因为它在虚拟机上运行。

我已经尝试过 Qt 的 ANGLE 和 OpenGL 版本,但都失败了。我预计 OpenGL 会失败,因为我不相信我们的 VMWare 基础架构具有兼容的视频驱动程序。

有没有其他人经历过这个并设法解决它?

谢谢,马库斯

0 投票
0 回答
221 浏览

android - EGL 显示在 Android 上的本机 Activity 中无效

我正在从事以下项目。我正在尝试做一个简单的 2D TriandleFan 盒子。

但是,当我运行项目时,以下行失败...

我不明白为什么它失败了,其他人可以看到吗?

0 投票
0 回答
591 浏览

android - 如何使用 Android NDK 通过 openGLES2 渲染视频

0 投票
2 回答
3210 浏览

android - 获取异常:致命异常:GLThread 没有配置匹配 configSpec

我正在使用下面的 MultiSampling 代码来制作平滑的边缘。下面的代码正在一些手机和其他手机上工作,我遇到了异常' No configs match configSpec

请帮我解决这个问题。

提前致谢。

0 投票
1 回答
11614 浏览

android - Android 使用 EGL 初始化 openGL2.0 上下文

我想用原生代码在 Android 上进行屏幕外图像处理,所以我需要通过 EGL 在原生代码中创建 openGL 上下文。

通过 EGL,我们可以创建 EGLSurface,我可以看到那里有三个选择: * EGL_WINDOW_BIT * EGL_PIXMAP_BIT * EGL_BUFFER_BIT

第一个用于屏幕处理,第二个用于屏幕外处理,所以我使用 EGL_PIXMAP_BIT 如下:

代码在第 5 步失败,似乎 Android 不支持离屏处理?不支持 EGL_PIXMAP_BIT 类型。!

0 投票
1 回答
4319 浏览

android - 如何直接从 Android Surface 访问 EGL Image 以在 MediaCodec 视频解码器中使用?

我目前正在编写一个 android 应用程序,我需要在其中缓存视频帧,以便我可以轻松地来回切换,几乎没有延迟。

MediaCodec现在,我通过向对象的 Configure 调用提供 SurfacereleaseOutputBuffer并将渲染标志设置为true.

我发现访问解码的表面数据的唯一方法(除了解码返回的字节缓冲区,其格式似乎与设备相关)是调用链接到表面updateTeximage的链接,将其附加到目标并将其渲染到我创建的目标纹理我自己为了缓存它。SurfaceTextureGL_TEXTURE_EXTERNAL_OESGL_TEXTURE2D

我想优化这个缓存过程并能够在不同的线程上解码帧。使用我当前的方法,这意味着我必须为视频解码器创建另一个 EGL 上下文,共享上下文等...

我的问题是:是否可以在不调用的情况下访问与 Surface 关联的 EGL 图像或本机缓冲区数据 updateTexImage

这样我就可以缓存 egl 图像(根据 ,它不需要 EGL 上下文EGL_ANDROID_image_native_buffer)。这也将以 YUV 格式缓存,这将比我现在缓存的原始 RGB 纹理更节省存储。

0 投票
1 回答
310 浏览

android-emulator - Android 模拟器 EGL14 属性 EGL_RECORDABLE_ANDROID 不起作用

我在模拟器上使用 4.3 的 Android 模拟器

在创建 egl 的上下文期间,我给出了属性 EGL_RECORDABLE_ANDROID,但它没有说 BAD_CONFIG?

知道为什么会失败吗?

0 投票
1 回答
974 浏览

egl - Apporable - 如何在后台线程上运行 OpenGL?

我想在后台线程上完成所有渲染。目前,我在 iOS 上使用CAEAGLLayerUIView 子类中的 a,然后在后台线程上执行所有 OpenGL 启动(包括通过...绑定层:

...)但是,当我在 Android 上尝试此操作时,Apporable 兼容层会在 EGL 中触发错误,因为它正在尝试使用来自另一个线程的 EGL Surface ...:

如何在 BG 线程上进行渲染?是否有任何适用的线程文档(例如,是用于运行 iOS 主线程的 Android UI 线程?还是一个单独的线程?)