首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图

OpenGL学习二十四:作图像素,位图,图像

2014-04-19 来源:读书人网 【读书人网(Reader8.cn):综合教育门户网站】
OpenGL学习二十四:绘制像素,位图,图像?????????????? ?绘制位图glBitmap (GLsizei width, GLsizei height,

OpenGL学习二十四:绘制像素,位图,图像
?????????????? OpenGL学习二十四:作图像素,位图,图像

?

绘制位图
glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);

xorig,yorig定义了光栅的原点,它根据当前光栅位置确定的,正值在当前光栅的上面和右面,负值在当前的下面和左面
xmove,ymove表示位图光栅化后光栅位置的增加量

说明:如果位图信息数据包含N个字节,位图高度为M,那么每行所包含的字节数为n/m根据此内容渲染位图0,1 来达到期望的效果

?

图像
void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);

从帧缓冲区读取一个矩形像素数组,并把数据保存在内存中
glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);

把内存中保存的一个矩形像素数组写入到帧缓冲区中由glRasterPos指定的当前位置
glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum buffer);
从帧缓冲区读取一个矩形像素数组,并把数据保存在内存中
buffer:GL_DEPTH(GL_DEPTH_COMPONENT)
??????? GL_STENCIL(GL_STENCIL_INDEX)
??????? GL_COLOR(GL_RGBA或GL_COLOR_INDEX)

?

放大,缩小或旋转图像
void glPixelZoom(Glfloat zoomx,Glfloat zoomy)
设置像素的写入操作glDrawPixels,glCopyPixels中x,y方向的放大或缩小因子,默认值都是1.0,如果它们都是2.0,图像每个像素被绘制4个屏幕像素,可以使用负的缩放因子,负的缩放因子根据当前光栅位置对图像进行翻转。正常图片是自底向上,从左到用,如果Y为负数,图像映射到屏幕上就是自顶向下的

?glRasterPos2i(0, 0);
?? //glPixelZoom (2, 2);//1
?? glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB,? GL_UNSIGNED_BYTE, checkImage);
?? //glPixelZoom (1, 1);//2
?? glRasterPos2i (250, 0);
?glCopyPixels(0,0,checkImageWidth,checkImageHeight,GL_COLOR);

左边的图为glDrawPixels,右边的图是glCopyPixels

OpenGL学习二十四:作图像素,位图,图像

将1,2处解开,可见DrawPixels大小放大2*2倍,glCopyPixels在2*2倍 再次放大1*1倍

OpenGL学习二十四:作图像素,位图,图像

将1,2处解开,可见DrawPixels大小放大2*2倍,glCopyPixels在2*2倍 再次放大1*1倍

OpenGL学习二十四:作图像素,位图,图像

由此可见不显示调用glPixelZoom (1, 1),默认与使用原来放大倍数再次放大

?

?