我正在嘗試使用OpenGLES2.0爲Android開發一個小型遊戲,並且我遇到了阻止我實現設備之間兼容性的問題。我使用兩個設備(Xperia Z1和Galaxy S2)測試我的應用(因爲模擬器不支持OpenGLES2.0)。如果我打電話給GLUtils.texImage2D
加載帶有來自分辨率低於或等於1024x1024的圖像的位圖的紋理,它在兩個設備中都能正常工作。在S2上使用2048x2048的紋理,但不再在Z1上(它返回GL_INVALID_VALUE
)。加載比Z1更高的任何東西都不適用,也不適用於S2。不過,我已經選中GL_MAX_TEXTURE_SIZE
,並在它被設置爲4096兩個設備,我不知道什麼是錯的,我稱之爲texImage2D如下:GL_INVALID_VALUE from GLUtils.texImage2D
GLES20.glGenTextures(1,texture,0);
Bitmap bmp = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.test);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture[0]);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bmp, 0);
提前感謝!