关于openGL中glReadPixels接口的一点使用心得
2016-03-25 16:28
1041 查看
今天使用glReadPixels接口想要获取下opengl画出画面,保存成BMP图片,结果由于学艺不精,花费了好多时间,特此记录下:
前两个 x, y是描画的图像的左下角的坐标,具体说来,就是相对显示窗的左下角为(0,0)原点的坐标点,如果想截取整个opengl显示窗口,取0,0即可,不是opengl描画坐标系的原点值。
width和height这两个值代表你要截屏的范围,一般选择整个显示窗口的大小。这两个值如果错了,会导致你截出来的图片有重复或者尺寸有问题
format和type
format指的是opengl中像素存储的格式,一般有:
GL_ALPHA
GL_RGB
GL_RGBA
这个比较简单,主要是问你你到底想要color framebuffer中的哪些数据,可以只要alpha,或者rgb或者RGBA都要
type这个值要和format匹配上,GL_UNSIGNED_BYTE,0-255内
GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_4_4_4_4, or GL_UNSIGNED_SHORT_5_5_5_1,这个每一个通道的范围在0-2n次方的范围内,这里需要注意,format和type需要匹配,你可以去查询当前opengl支持的匹配的两者值是多少,查询方法如下:
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE,&eReadType);
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT,&eReadFormat);
这两个接口可以查询匹配的format和type值
最后一个参数是图像数据存放的指针,保证分配的空间够大,不要越界就好
首先介绍下glReadPixels的参数,该接口有7个参数 void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * data);
前两个 x, y是描画的图像的左下角的坐标,具体说来,就是相对显示窗的左下角为(0,0)原点的坐标点,如果想截取整个opengl显示窗口,取0,0即可,不是opengl描画坐标系的原点值。
width和height这两个值代表你要截屏的范围,一般选择整个显示窗口的大小。这两个值如果错了,会导致你截出来的图片有重复或者尺寸有问题
format和type
format指的是opengl中像素存储的格式,一般有:
GL_ALPHA
GL_RGB
GL_RGBA
这个比较简单,主要是问你你到底想要color framebuffer中的哪些数据,可以只要alpha,或者rgb或者RGBA都要
type这个值要和format匹配上,GL_UNSIGNED_BYTE,0-255内
GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_4_4_4_4, or GL_UNSIGNED_SHORT_5_5_5_1,这个每一个通道的范围在0-2n次方的范围内,这里需要注意,format和type需要匹配,你可以去查询当前opengl支持的匹配的两者值是多少,查询方法如下:
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE,&eReadType);
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT,&eReadFormat);
这两个接口可以查询匹配的format和type值
最后一个参数是图像数据存放的指针,保证分配的空间够大,不要越界就好
相关文章推荐
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- upload上传单张图片
- 图片引发的溢出危机(图)
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- 获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
- C#实现将Email地址转成图片显示的方法
- C#实现图片加相框的方法