计算机图形学(二)输出图元_14_OpenGL像素阵列函数_3_光栅操作
来源:互联网 发布:现货黄金行情软件 编辑:程序博客网 时间:2024/05/20 23:39
OpenGL光栅操作
除了将像素阵列存入缓存,我们可以从缓存中取出一块值或将一块值复制到另一缓存区域。可以对像素阵列执行各种其他操作。一般情况下,术语光栅操作(raster operation)用于描述以某种方式处理一个像素阵列的任何功能。将一个像素阵列的值从一个位置移到另一位置的光栅操作也称为像素值的bitblt移动(bit-block transfer ),尤其是在该功能由硬件实现时。在多层次的系统中,术语pixblt用于块移动。
使用下列函数可在指定缓存中选择一个矩形块的像素值:
使用函数:
使用下面的函数可将一块像素数据从OpenGL缓存的一个位置复制到另一个位置:
glDrawBuffer命令选择。提供和接受复制的两个区域都必须在屏幕坐标的边界内。
为了实现用glDrawPixels或glCopyPixels将一块像素值放入缓存的不同效果,我们可以使用各种方式将取出的值与缓存原来的值进行组合。例如,可使用与(and )、或(or)和异或(exclusive or )等逻辑操作来组合两个块的像素值。在OpenGL中,可以使用下面的函数来选择按位逻辑操作,以组合取来的和目标的像素颜色值:
还有一些OpenGL子程序用来管理由glDrawPixels、glReadPixels和glCopyPixels等函数处理的像素阵列。例如,glPixelTransfer和glPixelMap子程序可用来移动或调整颜色值、深度值或模板值。我们在以后几章中讲解计算机图形软件包的其他方面时再讨论像素操作。
除了将像素阵列存入缓存,我们可以从缓存中取出一块值或将一块值复制到另一缓存区域。可以对像素阵列执行各种其他操作。一般情况下,术语光栅操作(raster operation)用于描述以某种方式处理一个像素阵列的任何功能。将一个像素阵列的值从一个位置移到另一位置的光栅操作也称为像素值的bitblt移动(bit-block transfer ),尤其是在该功能由硬件实现时。在多层次的系统中,术语pixblt用于块移动。
使用下列函数可在指定缓存中选择一个矩形块的像素值:
glReadPixels (xmin, ymin, width, height, dataFormat, dataType, array);要提取的矩形块的左下角是屏幕坐标位置(xmin, ymin)。参数width ,height , dataFormat和dataType与glDrawPixels子程序中的相同。存入参数array中的数据类型依赖于选择的缓存。我们可通过给参数dataFormat赋值GL_DEPTH_COMPONENT或GL_STENCIL_INDEX来选择深度缓存或模板缓存。
使用函数:
glReadBuffer (buffer);可以为glReadPixels子程序选择颜色或辅助缓存的特殊组合。指定一个或多个缓存的符号常量与glDrawBuffer子程序中的一样,但不能选择所有四个颜色缓存。默认选择是由立体观察状态所确定的前左_前右缓存组合或仅仅是前左缓存。
使用下面的函数可将一块像素数据从OpenGL缓存的一个位置复制到另一个位置:
glCopyPixels (xmin, ymin, width, height, pixelValues);块的左下角是屏幕坐标位置(xmin, ymin),参数width和height被赋以正整数,分别指出要复制的列数和行数。参数pixelValues被赋以GL_COLOR、GL_DEPTH或GL_STENCIL来指定要复制的数据种类:颜色值、深度值或模板值。一块像素值从源缓存(source buffer)复制到目标缓存(destination buffer),其左下角映射到当前光栅位置。源缓存用glReadBuffer命令选择,而目标缓存用
glDrawBuffer命令选择。提供和接受复制的两个区域都必须在屏幕坐标的边界内。
为了实现用glDrawPixels或glCopyPixels将一块像素值放入缓存的不同效果,我们可以使用各种方式将取出的值与缓存原来的值进行组合。例如,可使用与(and )、或(or)和异或(exclusive or )等逻辑操作来组合两个块的像素值。在OpenGL中,可以使用下面的函数来选择按位逻辑操作,以组合取来的和目标的像素颜色值:
glEnable (GL_COLOR_LOGIC_OP);glLogicOp (logicOp);参数logicOp可被赋以多种符号常量,包括GL_AND、GL_OR和GL_XOR。另外,取来的和目标的位值可以颠倒(即0和1互换)。使用常量GL_COPY_INVERTED可将取来的颜色位值颠倒后再取代目标值。使用GL_INVERT则仅仅颠倒了目标位值而不使用取来的值。各种颠倒操作还可与逻辑与、或以及异或操作进行组合。其他操作包括将目标位清0(GL_CLEAR),或设定所有的目标位为1( GL_SET )。glLogicOp子程序的默认值是GL_COPY,简单地用取来的值去替代目标值。
还有一些OpenGL子程序用来管理由glDrawPixels、glReadPixels和glCopyPixels等函数处理的像素阵列。例如,glPixelTransfer和glPixelMap子程序可用来移动或调整颜色值、深度值或模板值。我们在以后几章中讲解计算机图形软件包的其他方面时再讨论像素操作。
0 0
- 计算机图形学(二)输出图元_14_OpenGL像素阵列函数_3_光栅操作
- 计算机图形学(二)输出图元_14_OpenGL像素阵列函数_2_像素图函数
- 计算机图形学(二)输出图元_14_OpenGL像素阵列函数_1_位图函数
- 计算机图形学(二)输出图元_13_像素阵列图元
- 计算机图形学(二)输出图元_6_OpenGL曲线函数_3_椭圆生成算法
- 计算机图形学(二)输出图元_3_画线算法_1_直线方程
- 计算机图形学(二)输出图元_3_画线算法_2_DDA算法
- 计算机图形学(二)输出图元_3_画线算法_3_Bresenham画线算法
- 计算机图形学(二)输出图元_10_多边形填充区_3_内-外测试
- 计算机图形学(二)输出图元_18_显示列表_3_删除 OpenGL 显示表
- 计算机图形学(二)输出图元_16_字符函数
- 计算机图形学(二)输出图元
- 计算机图形学(二)输出图元_8_像素编址和对象的几何要素
- 计算机图形学(三)_图元的属性_16_ 反走样_3_子像素的加权掩模
- 计算机图形学(二)输出图元_9_填充区图元
- 计算机图形学(二)输出图元_12_OpenGL顶点数组
- 计算机图形学(二)输出图元_17_图形分割
- 计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(上)
- 控制物体旋转和缩放代码
- 答辩点点点
- HDU 1518 Square(DFS)
- 基本数据结构概念
- Spring Data JPA Tutorial Part Nine: Conclusions(未翻译)
- 计算机图形学(二)输出图元_14_OpenGL像素阵列函数_3_光栅操作
- 第十三周--交通类纯虚函数
- string与date互转,以及时间比较
- 鼠标控制物体移动
- windows下apache下载安装
- 架构漫谈(七):不要空设架构师这个职位,给他实权
- 利用PPT制作PNG透明图片
- 磁盘调度算法
- SQL Server 查询表的记录数(3种方法,推荐第一种)