计算机图形学(二)输出图元_14_OpenGL像素阵列函数_2_像素图函数

OpenGL像素图函数
函数
glDrawPixels (width, height, dataFormat, dataType, pixMap);
       将用彩色阵列定义的图案应用到一块帧缓存的像素位置。其中的width和height也分别给出像素位 图的列数和行数(阵列pixMap )。参数dataFormat用一个OpenGL常量赋值,指出如何为阵列指定 值。例如,使用常量GL_BLUE可指定所有像素都使用蓝色,使用常量GL_BGR可按蓝、绿、红次 序指定颜色分量。还可能有一些其他的颜色指定方法,我们在下一章将详细关注颜色选择的方法。 参数dataType设定为OpenGL常量GL_BYTE,GL_INT或GL_FLOAT,以指定阵列中颜色的数据 类型。该颜色阵列的左下角映射到由glRasterPos设定的当前光栅位置。作为一个例子,下面的语句 显示一个128 x 128的RGB彩色阵列定义的像素图:
glDrawPixels (128, 128, GL_RGB, GL_UNSIGNED_BYTE, colorShape);
       由于OpenGL提供了若干个缓存,将某缓存选为glDrawPixels子程序的目标即可将一个阵列送 进该缓存。有的缓存存放颜色值,而有的存放另外的像素数据。例如,深度缓存(depth buffer) 来存放对象离开观察位置的距离,而模版缓存(stencil buffer)用来存放场景的边界图案。glDrawPixels 函数中的dataFormat参数设定为GL_DEFTH_COMPONENT或GL_STENCIL_INDEX就可在两个缓 存中选定一个。我们需要使用深度值或模版信息设定像素阵列。后面几章将详细考察这些缓存
       OpenGL有4个颜色缓存(color buffer)用于屏幕刷新两个颜色缓存用于立体显示中的左、右 两个场景。对于立体显示缓存中的每一个,有用动画显示的前_后一对双缓存。在OpenGL的特 殊实现中,立体显示或双缓存之一、或是二者都得不到支持。如果立体显示和双缓存都不支持,则 仅有单一的刷新缓存用做前_左颇色缓存(front-left color buffer )。这是在双缓存无效时的默认缓存。 如果双缓存有效,默认是后_左和后_右缓存或仅仅是后_左缓存,取决于立体观察的当前状态。同 样,还支持一些用户定义的辅助颜色缓存用于任何非刷新用途,如保存图片用于以后复制到刷新缓 存去显示。
       使用下面的命令可选择一个颜色的辅助或混合缓存来存储像素图:
glDrawBuffer (buffer);
        多种OpenGL符号常量可赋给参数buffer,以指定一个或多个“绘图”缓存。例如,可用 GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT或GL_BACK_RIGHT来选定单一的缓 存。使用GL_FRONT来选择两个前缓存,而用GL_BACK选择两个后缓存。这假定立体显示已有 效。否则,前面两个符号常量仅指定单一缓存。类似地,我们可以用GL_LEFT或GL_RIGHT指定 一对左缓存或一对右缓存,并且可以使用GL_FRONT_AND_BACK来选择所有可用的颜色缓存 辅助缓存通过常量GL_AUXk来选择,其中k是0到3的一个整数,某些OpenGL实现中有多于4个辅助缓存。

你可能感兴趣的:(像素图函数)