【问题标题】:glTexImage2D fails for GL_RG on Snapdragon devicesSnapdragon 设备上的 GL_RG 的 glTexImage2D 失败
【发布时间】:2016-01-14 05:11:20
【问题描述】:

我正在尝试使用带有以下代码的 glTexImage2D 加载 2 通道无符号字符纹理(使用 NDK,但我认为这不会有太大区别):

glTexImage2D(GL_TEXTURE_2D, 0, GL_RG32F, width >> 1, height >> 1, 0, GL_RG, GL_UNSIGNED_BYTE, textureData);

这适用于至少可以追溯到 Android 19 (KitKat) 的许多不同的 Android 设备。但是在带有 Snapdragon 内核(例如 Nexus 6P)的设备上,调用失败并且错误是 GL 错误 0x502 (GL_INVALID_OPERATION)。

我在网上找到了 Qualcomm Adreno OpenGL ES 开发人员指南,它说 GL_RG32F 是受支持的内部格式。我还尝试了各种其他内部格式,但都失败了。

我还对内部格式和格式参数使用 GL_LUMINANCE 进行了测试,并且我能够成功加载纹理而无需进行其他更改(在这种情况下,明显的问题是丢失了一半的纹理数据)。

我想避免在 CPU 上分离这些纹理数据并将其作为两个单独的纹理加载,但我正在努力想办法避免这种情况。

我在这里遗漏了一些明显的东西吗?或者 GL_RG 不是我可以在这些设备上使用的东西?

【问题讨论】:

    标签: android opengl-es android-ndk qualcomm


    【解决方案1】:

    所以在我的例子中,我需要使用 GL_RG8 作为内部格式而不是 GL_RG32F。一旦我进行了更改,GL_INVALID_OPERATION 错误就消失了,设备开始按预期运行。

    【讨论】:

      猜你喜欢
      • 2013-10-04
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 2017-01-13
      • 2021-05-13
      • 2023-03-26
      相关资源
      最近更新 更多