我试图在OpenGL GLSurfaceView
中显示一个字节数组。
所以我有GLRenderer
课程实施Renderer
和方法onSurfaceCreated
byte[] data = new byte[512*512];
for (int i = 0; i < 512*512; i++) {
data[i] = 100;
}
ByteBuffer buffer = ByteBuffer.allocateDirect(512*512);
buffer.put(data);
buffer.position(0);
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 512, 512, 0,
GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);
但屏幕上没有显示任何内容。仅供参考,onSurfaceChanged
和onDrawFrame
方法中没有特殊代码。
答案 0 :(得分:1)
格式和数据大小不匹配。 GL_RGBA每个纹素占用4 * sizeof(类型),因此您需要相应地缩放缓冲区。但是,如果您只想要单个通道纹理,请改用GL_RED。