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

目录

一、效果

二、说明

三、关键代码

四、相关参考

五、代码地址


一、效果

     

二、说明

如上图,左上角是一个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;
        }

四、相关参考

glClearColorglClearglReadPixels ,

设置背景色

五、代码地址

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值