目录
一、效果
二、说明
如上图,左上角是一个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 ,