问题标签 [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.
opengl-es - EGL/OpenGL ES/切换上下文很慢
我正在开发一个由多个“框架”组成的 OpenGL ES 2.0 应用程序(使用 Windows 上的angleproject 进行开发)。
每个框架都是一个独立的应用程序,不应干扰周围的框架。帧是使用 OpenGL ES 2.0 绘制的,由在该帧内运行的代码。
我的第一次尝试是为每个帧分配一个帧缓冲区。但是有一个问题 - OpenGL 的内部状态在绘制一帧时发生了变化,如果下一帧没有全面重置每个已知的 OpenGL 状态,则可能存在副作用。这违背了我的要求,即每一帧都应该被隔离并且不会相互影响。
我的下一个尝试是每帧使用一个上下文。我为每一帧创建了一个独特的上下文。我正在使用共享资源,以便我可以 eglMakeCurrent 到每个帧,将每个渲染到自己的帧缓冲区/纹理,然后 eglMakeCurrent 回到全局,将每个纹理组合到最终屏幕。
这在隔离实例方面做得很好,但是.. eglMakeCurrent非常慢。只需 4 个就可以使渲染屏幕需要一秒钟或更长时间。
我可以采取什么方法?有没有一种方法可以加快上下文切换,或者通过以某种方式保存每帧的 OpenGL 状态来避免上下文切换?
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 以及模拟器上测试。结果相同。
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 基础架构具有兼容的视频驱动程序。
有没有其他人经历过这个并设法解决它?
谢谢,马库斯
android - 获取异常:致命异常:GLThread 没有配置匹配 configSpec
我正在使用下面的 MultiSampling 代码来制作平滑的边缘。下面的代码正在一些手机和其他手机上工作,我遇到了异常' No configs match configSpec
。
请帮我解决这个问题。
提前致谢。
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 类型。!
android - 如何直接从 Android Surface 访问 EGL Image 以在 MediaCodec 视频解码器中使用?
我目前正在编写一个 android 应用程序,我需要在其中缓存视频帧,以便我可以轻松地来回切换,几乎没有延迟。
MediaCodec
现在,我通过向对象的 Configure 调用提供 SurfacereleaseOutputBuffer
并将渲染标志设置为true
.
我发现访问解码的表面数据的唯一方法(除了解码返回的字节缓冲区,其格式似乎与设备相关)是调用链接到表面updateTeximage
的链接,将其附加到目标并将其渲染到我创建的目标纹理我自己为了缓存它。SurfaceTexture
GL_TEXTURE_EXTERNAL_OES
GL_TEXTURE2D
我想优化这个缓存过程并能够在不同的线程上解码帧。使用我当前的方法,这意味着我必须为视频解码器创建另一个 EGL 上下文,共享上下文等...
我的问题是:是否可以在不调用的情况下访问与 Surface 关联的 EGL 图像或本机缓冲区数据 updateTexImage
?
这样我就可以缓存 egl 图像(根据 ,它不需要 EGL 上下文EGL_ANDROID_image_native_buffer
)。这也将以 YUV 格式缓存,这将比我现在缓存的原始 RGB 纹理更节省存储。
android-emulator - Android 模拟器 EGL14 属性 EGL_RECORDABLE_ANDROID 不起作用
我在模拟器上使用 4.3 的 Android 模拟器
在创建 egl 的上下文期间,我给出了属性 EGL_RECORDABLE_ANDROID,但它没有说 BAD_CONFIG?
知道为什么会失败吗?
egl - Apporable - 如何在后台线程上运行 OpenGL?
我想在后台线程上完成所有渲染。目前,我在 iOS 上使用CAEAGLLayer
UIView 子类中的 a,然后在后台线程上执行所有 OpenGL 启动(包括通过...绑定层:
...)但是,当我在 Android 上尝试此操作时,Apporable 兼容层会在 EGL 中触发错误,因为它正在尝试使用来自另一个线程的 EGL Surface ...:
如何在 BG 线程上进行渲染?是否有任何适用的线程文档(例如,是用于运行 iOS 主线程的 Android UI 线程?还是一个单独的线程?)