AndroidOpenGLESDemos glReadPixel读取当前缓冲区像素并保存成Bitmap

目录

一、效果

二、说明

三、关键代码

四、相关参考

五、代码地址


一、效果

AndroidOpenGLESDemos glReadPixel读取当前缓冲区像素并保存成Bitmap_第1张图片     AndroidOpenGLESDemos glReadPixel读取当前缓冲区像素并保存成Bitmap_第2张图片

二、说明

如上图,左上角是一个GLSurfaceView,中间是一个按钮,左下角是一个ImageView(初始显示颜色为黑色);当点击按钮之后,利用OpenGL的API glReadPixels 可以将当前GL渲染缓冲区中的颜色获取并可以保存为Bitmap。

三、关键代码

glReadPixels  前4个参数主要控制从缓冲区的什么位置开始读取多长多宽的区域,第5个参数表示数据格式,第6个参数表示数据类型,通常是GL_UNSIGNED_BYTE(此时的第7个参数通常就是ByteBuffer对象,用以存储从GL缓冲区返回的数据)。

        private Bitmap readBufferPixelToBitmap(int width, int height) {
            ByteBuffer buf = ByteBuffer.allocateDirect(width * height * 4);
            buf.order(ByteOrder.LITTLE_ENDIAN);
            GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);
            buf.rewind();

            Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            bmp.copyPixelsFromBuffer(buf);
            return bmp;
        }

四、相关参考

glClearColor,glClear,glReadPixels ,

设置背景色

五、代码地址

https://github.com/flycatdeng/KarenJar/blob/master/app/src/main/java/com/karenjar/demo/opengl/SaveImageAty.java

你可能感兴趣的:(gles,gles基础,Android,OpenGL,ES,Demos)