初期化コードは、128x128ピクセルのRGB単色テクスチャを1つ作成します。
GLES20.glGenTextures ( 1, textureId, 0 );
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, textureId[0] );
GLES20.glTexImage2D ( GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGB, bitmap.getWidth(), bitmap.getHeight(), 0,GLES20.GL_RGB, GLES20.GL_UNSIGNED_BYTE, byteBuffer );|
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, 0 );
初期化後、適切なテクスチャがあり、すべてが正常に機能します。いくつかのポイントでは、テクスチャにいくつかの変更を加えるか、他の画像に完全に置き換える必要があります。
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, textureId[0] );
GLES20.glTexImage2D ( GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGB, bitmap.getWidth(), bitmap.getHeight(), 0,GLES20.GL_RGB, GLES20.GL_UNSIGNED_BYTE, byteBuffer );|
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, 0 );
ただし、glTexImage2Dはテクスチャに変更を加えず、エラーを返しません。しかし、このコードは私のiOSプロジェクトでは正しく機能しますが、Androidの場合は機能しません。同じテクスチャでglTexImage2D(..)を2回使用できないようです。つまり、テクスチャを変更する唯一の方法は、新しいテクスチャを作成して古いテクスチャを削除することですが、iOSで正しく機能するのはなぜですか。私のコードの何が問題になっていますか?