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

时间:2016-09-13 09:00:58

标签: java android opengl-es opengl-es-2.0

我试图在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);

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

1 个答案:

答案 0 :(得分:1)

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