计算机图形学输出图元_14_OpenGL像素阵列函数_1_位图函数
Posted heyuchang666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机图形学输出图元_14_OpenGL像素阵列函数_1_位图函数相关的知识,希望对你有一定的参考价值。
OpenGL像素阵列函数 OpenGL中有两个函数可用于定义矩形阵列的形状或图案。一个是位图,另一个是像素图。OpenGL也提供若干的函数用于存储、复制及管理像素值阵列。OpenGL位图函数
下面的函数定义了一个二值的阵列:
glBitmap (width, height, x0, y0, xOffset, yOffset, bitShape);
函数中的参数width和height分别给出阵列bitShape的列数和行数。bitShape的每一元素赋值为0或1。
值为1表示对应像素用前面设定的颜色显示;否则,对应像素不受该位图影响。(作为一个选项,可
使用1表示将指定颜色与存储在刷新缓存中对应位置的颜色值相结合。)参数x0和y0定义了矩形阵
列“原点”的位置。原点位置指定为bitShape的左下角,而x0和y0可正可负。另外,需要指定帧
缓存中应用图案的位置。该位置称为当前光栅位置(current raster position ),而位图在将原点置于
当前光栅位置后显示。赋给xOffset和yOffset的值用做位图显示后更新帧缓存当前光栅位置的坐标
位移。
x0, y0, xOffset, yOffset和当前光栅位置的坐标值使用浮点数格式。位图当然用整数的像素 位置。但浮点数的坐标允许将一组位图以任意的间隔安排,这在某些应用如用位图字符形成字符串 中很有用。
可以使用下面的子程序来设定当前光栅位置:
glRasterPos* ()
参数和后缀码与glVertex函数中的一样。因此,当前光栅位置在世界坐标系中给出,由观察变换将
其变换到屏幕坐标系。在我们的二维例子中,可以直接使用整数屏幕坐标指定当前光栅位置的坐标。
当前光栅位置的默认值是世界坐标系中的原点(0, 0, 0)。
位图的颜色使用glRasterPos被引用时的有效颜色。任何后来的颜色改变不会影响该位图。
矩形位阵中每一行以8位为单位组织存放,即安排成一组8位无符号字符。但我们可以使用任 何方便的网格大小来描述形状。作为一个例子,图3.61给出了一个用10行9列的网格定义位阵列, 这时每行使用16个二进制位来描述。在将该图案应用于帧缓存像素时,第9列之后的所有位值均 被忽略。
使用下面的程序段可将图3.61中的位图案应用于帧缓存中:
GLubyte bitShape [20] =
0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00,
0xff, 0x80, 0x7f, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x08, 0x00;
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);//Set pixel storage made.
glRasterPos2i (30, 40);
glBitmap (9, 10, 0.0, 20.0, 15.0, bitShape);
bitShape的阵列值从矩形网格的底部开始逐行指定。接着使用OpenGL函数glPixelStorei设定位图的
存储模式。该函数中使用参数值1表明数据值用字节边界对齐。glRasterPos用来设定当前光栅位置
为(30, 40)。最后,函数glBitmap指定位阵列在阵列bitShape中给出,且该阵列有9列10行。这个阵列的原点坐标在(0.0, 0.0),即在网格的左下角。我们给出坐标位移为(20.0, 15.0),尽管在本例中该位移没有用。以上是关于计算机图形学输出图元_14_OpenGL像素阵列函数_1_位图函数的主要内容,如果未能解决你的问题,请参考以下文章
计算机图形学输出图元_18_显示列表_3_删除 OpenGL 显示表
计算机图形学输出图元_10_多边形填充区_8_OpenGL顶点数组
计算机图形学输出图元_18_显示列表_2_执行OpenGL显示表