SAMSUNGのAndroid2.2系端末、初代ギャラタブとかですね。この頃の機種はOpenGLのドライバに悲しいバグが色々あるのですが、検索で見つからず難儀した事を思い出したので軽く。
テクスチャ絡みで、テクスチャに割り当てるIDを払いだしてもらえるメソッドがあります。
結論:
そのメソッドを使ってはいけません。
(なんてメソッドだったか調べるの面倒くさいので、各自でよろしくです)
何故か:
負の値が払い出される事がある。その値をそのままテクスチャのバインドに使うと、そのIDに割り当てたテクスチャは呼び出せない。
gl.glBindTexture(GL11.GL_TEXTURE_2D, id);
GLUtils.texImage2D(GL11.GL_TEXTURE_2D, 0, bmp, 0);
これで id<0 だと、描画時にもう一回バインドしても何も描画されません。
ま、gl.glBindTexture()が負の値を受け付けないというか、0以下はバインド解除なんで当然なんですけれど。
ちなみに払い出しID値の法則性は不明。他のメーカーの端末とは異なり意味不明なバラバラな値。なんか擬似乱数っぽい感じでした。
解決策:
自分で適当なカウンタを用意して、それを勝手にIDとして使います。
IDはかぶらなければ、特に問題なかったです。OpenGLって、結構てきとうな作りですね。
0 件のコメント:
コメントを投稿