在OpenglES2中使用glTexImage2D(..)更新纹理[Android]

Tut*_*men 6 android opengl-es-2.0

初始化代码创建一个具有128x128像素的RGB单色纹理:

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 );
Run Code Online (Sandbox Code Playgroud)

初始化后我有适当的纹理,一切正常.在某些方面,我必须对纹理进行一些更改,甚至将其与其他图像完全替换:

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 );
Run Code Online (Sandbox Code Playgroud)

但glTexImage2D不会对纹理进行任何更改并且不会返回错误.但是这个代码在我的iOS项目中正常工作,但是在android的情况下却没有.看起来我不能使用glTexImage2D(..)两次使用相同的纹理,换句话说,修改纹理的唯一方法是创建新纹理并删除旧纹理,但为什么它在iOS中正常工作?我的代码出了什么问题?

Tut*_*men 6

对不起,那是我的错.我试图从其他线程(而不是GL线程)调用glTexImage2D函数.现在一切都很完美.