次のコードで glTexImage2D を使用して 2 チャネルの unsigned char テクスチャをロードしようとしています (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 Developer Guide をオンラインで見つけたところ、GL_RG32F がサポートされている内部形式であると書かれています。また、他のさまざまな内部フォーマットも試しましたが、すべて同様のレベルの失敗がありました。
内部フォーマットとフォーマット パラメータの両方に GL_LUMINANCE を使用してテストしたところ、他に変更を加えることなくテクスチャを正常にロードできました (この場合、テクスチャ データの半分が失われるという明らかな問題があります)。
このテクスチャ データを CPU 上で分離して 2 つの別々のテクスチャとしてロードすることは避けたいのですが、それを回避する方法を考え出すのに苦労しています。
ここで明らかな何かが欠けていますか?それとも、GL_RG はこれらのデバイスで使用できるものではないのでしょうか?