Android GLES20.glActiveTexture(GLES20.GL_TEXTURE0)返回1280

Android GLES20.glActiveTexture(GLES20.GL_TEXTURE0)返回1280,android,opengl-es,opengl-es-2.0,Android,Opengl Es,Opengl Es 2.0,我正在少数设备上测试我的android应用程序。它在三星Galaxy Note3上运行良好,但在HTC One X上没有显示任何内容 GLES20.glActiveTexture(GLES20.GL\u TEXTURE0)返回1280 AFAIK OpenGL实现至少应该支持2个纹理,那么为什么它失败了,我如何绕过它呢 完整绑定代码: /** * Load the texture for the square. * */ public void setGLTexture(Bitmap bi

我正在少数设备上测试我的android应用程序。它在三星Galaxy Note3上运行良好,但在HTC One X上没有显示任何内容

GLES20.glActiveTexture(GLES20.GL\u TEXTURE0)
返回1280

AFAIK OpenGL实现至少应该支持2个纹理,那么为什么它失败了,我如何绕过它呢

完整绑定代码:

/**
 * Load the texture for the square.
 *
 */
public void setGLTexture(Bitmap bitmap) {
    GLES20.glDisable(GLES20.GL_TEXTURE_2D);

    activeTextureIndex = (activeTextureIndex + 1) % TEXTURES_COUNT;

    Log.d("OPENGL_TEXTURE", "setting new bitmap " + bitmap + " for " + activeTextureIndex );

    GLES20.glActiveTexture(textureIds[activeTextureIndex]);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextures[activeTextureIndex]);

    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, bitmap, 0);

    GLES20.glEnable(GLES20.GL_TEXTURE_2D);
}

/** The texture pointer. */
private int activeTextureIndex = -1; // will be incremented before usage
private static final int TEXTURES_COUNT = 2;

private static final int[] textureIds = new int[] {
    GLES20.GL_TEXTURE0,
    GLES20.GL_TEXTURE1,
    GLES20.GL_TEXTURE2,
    GLES20.GL_TEXTURE3,
    GLES20.GL_TEXTURE4,
    GLES20.GL_TEXTURE5,
    GLES20.GL_TEXTURE6,
    GLES20.GL_TEXTURE7,
    GLES20.GL_TEXTURE8,
    GLES20.GL_TEXTURE9,
    GLES20.GL_TEXTURE10
};

我以前误读了你的代码。当您有一个单独的实际纹理ID数组(
mTextures
)时,您的纹理单元数组被称为
textureIds
,这令人困惑。您能否提供有关如何填充
mtexture
的信息?我真的不明白每次调用时,您都在做什么将纹理绑定到新的纹理单元。
GLES20.glGenTextures(纹理计数,mTextures,0)有点奇怪,但可能是因为你在禁用纹理后调用它而引发了这个错误?你为什么要这么做?