从缓冲区中读取数据(可以是颜色、深度等数据),缓冲区可以是当前窗口缓冲区,也可以是自定义的帧缓冲区FBO。
使用窗口缓冲区需要用glReadBuffer来指定
使用FBO需要用glBindFramebuffer来指定,当然如果绑定为0,则认为时窗口缓冲区
void glReadPixels( GLint x, GLint y, GLsizei width,GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
前四个参数可以得到一个矩形,该矩形所包括的像素都会被读取出来。(第一、二个参数表示了矩形的左下角横、纵坐标,坐标以窗口最左下角为零,最右上角为最大值;第三、四个参数表示了矩形的宽度和高度)
第五个参数表示读取的内容,例如:GL_RGB就会依次读取像素的红、绿、蓝三种数据,GL_RGBA则会依次读取像素的红、绿、蓝、alpha四种数据,GL_RED则只读取像素的红色数据(类似的还有GL_GREEN,GL_BLUE,以及GL_ALPHA)。如果采用的不是RGBA颜色模式,而是采用颜色索引模式,则也可以使用GL_COLOR_INDEX来读取像素的颜色索引。还有其他参数GL_STENCIL_INDEX, GL_DEPTH_COMPONENT,GL_RGB,GL_LUMINANCE, and GL_LUMINANCE_ALPHA.
第六个参数表示读取的内容保存到内存时所使用的格式ÿ