【发布时间】:2013-04-05 10:42:07
【问题描述】:
我们将一些使用 FBO 扩展 (GL_OES_framebuffer_object) 的 OpenGL ES 1.x 代码移植到 Android 并遇到了基于 Tegra 的设备 (Tegra 2, Tegra 3)。问题是,虽然设备在支持的扩展列表中报告 GL_OES_framebuffer_object 扩展,但部分功能似乎被破坏了,特别是 glGetIntegerv() 函数不接受任何与扩展相关的常量(例如GL_FRAMEBUFFER_BINDING_OES) 报告 GL_INVALID_ENUM 错误。同时,其他扩展相关的功能也正常。
- 这是一个已知问题吗?
- 是否有众所周知的解决方法?
- 是否有人也面临这个问题?
我们测试的设备是 Nexus7 和 Acer A500。
【问题讨论】:
-
我可以确认,使用 MonoGame 构建的游戏在 Nexus 4 和 Galaxy Tab 2 上运行良好,但在 Nexus 7 和 Acer A500 上创建帧缓冲区和渲染目标时也会失败。我还没有设法找到解决方法。所以我认为这是 Tegra 芯片组的问题 :(。我注意到 Adreno 320 和 PowerVR 支持 GL_OES_depth24,而 Tegra 不支持。所以正在考虑在 Tegra 设备上将深度设置为 16 以查看是否可行。我赢了'没有时间再测试它几天。
-
@Dominique:Tegra 仅支持 16 位深度缓冲区。
-
@kusma 将深度设置为 16 似乎可以解决 Tegra 设备上的问题。
标签: android opengl-es android-ndk tegra