【问题标题】:Is the OES_framebuffer_object extension broken on Tegra based devices?OES_framebuffer_object 扩展在基于 Tegra 的设备上是否损坏?
【发布时间】: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


【解决方案1】:

在 Tegra 设备上,您似乎需要将位深度设置为 16 才能工作。一旦我们在 MonoGame 中这样做,游戏就可以在 Nexus 7 和 Acer500 上正常运行。

D.

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多