Java 在Android的OpenGL中从字节数组创建纹理

Java 在Android的OpenGL中从字节数组创建纹理,java,android,opengl-es,opengl-es-2.0,Java,Android,Opengl Es,Opengl Es 2.0,我试图在OpenGLGLSurfaceView中显示字节数组 因此,我有一个GLRenderer类实现Renderer和一个方法onSurfaceCreated byte[]data=新字节[512*512]; 对于(int i=0;i

我试图在OpenGL
GLSurfaceView
中显示字节数组

因此,我有一个
GLRenderer
类实现
Renderer
和一个方法
onSurfaceCreated

byte[]data=新字节[512*512];
对于(int i=0;i<512*512;i++){
数据[i]=100;
}
ByteBuffer buffer=ByteBuffer.allocateDirect(512*512);
buffer.put(数据);
缓冲器位置(0);
GLES20.glTexImage2D(GLES20.GL_纹理_2D,0,GLES20.GL_RGBA,512,512,0,
GLES20.GL_RGBA,GLES20.GL_无符号字节,缓冲区);

但屏幕上没有显示任何内容。仅供参考,
onSurfaceChanged
onDrawFrame
方法中没有特殊代码。

格式和数据大小不匹配。GL_RGBA每texel占用4*sizeof(type),因此需要相应地缩放缓冲区。但是,如果您只需要单通道纹理,请改用GL_RED。

如果您使用的是无符号字节RGBA格式,则每像素需要4字节的数据。另外,在绘图框中没有特殊代码是什么意思?如何绑定纹理?使用GL_红色格式,然后返回到每像素1字节。@pleluron感谢您的回复,它成功了。你能把答案贴出来吗?