计算机图形学(二)输出图元_5_帧缓存值的装载

帧缓存值的装载

实现线段和其他对象显示函数的最后一步工作是设定帧缓存的颜色值。由于扫描转换算法以连续的单位间隔生成像素位置,因此扫描转换算法可使用增量方法在每一步高效地存取帧缓存。

作为一个特殊的例子,假设帧缓存矩阵是以行为主要顺序进行编址,并且像素位置从屏幕左上方((0,0)变化到屏幕右上方气(xmax,ymax)(参见图3.14)。对于二级系统(每个像素1位),像素位置(x,
y)的帧缓存位地址可以这样计算:

沿扫描线移动,像素(x+l, y)处的帧缓存地址可以根据位置(x, y)的地址偏移进行计算:

从(x, y)按对角线方向转移到下一条扫描线,那么(x+l, y+l)的帧缓存地址的算式为

其中,常数xmxa+2对于所有线段只需计算一次。同样,从等式(3.23)中可以得到屏幕x和y负方向单位步长的增量计算。这种地址计算仅包含一个整数加法。

实现存储像素亮度值的setPixel程序的方法,取决于特定系统的能力以及软件包的设计需求。对于能为每个像素显示一定范围亮度值的系统,帧缓存地址的计算包括像素宽度(位数)以及像素屏幕位置。

时间: 2024-10-27 17:42:04

计算机图形学(二)输出图元_5_帧缓存值的装载的相关文章

计算机图形学笔记-图形系统

图片由图片元素(像素 pixel)的阵列(光栅 raster)生成.一个像素对应图像中的一个位置或一块小的区域. 目前几乎所有计算机图形系统都基于光栅. 帧缓存 frame buffer:用于保存像素的一个储存区域,可以看做是图形系统的核心元素.一般使用特殊类型的存储器芯片(可以快速重新显示帧缓存中的内容)实现.在基于软件的图形系统(如:用于高分辨率绘制的系统.生成复杂不能实时生成视觉效果的系统)中,帧缓存是系统存储器的一部分. 分辨率 resolution:帧缓存中像素的数目,决定从图像中可以

计算机图形学(二)输出图元_20_章节总结(上)

输出图元章节总结 发了好久第2章终于结束了,本章中讨论的输出图元为使用直线.曲线.填充区域.单元阵列样式和文本构造图形提供了基本的工具.我们通过在笛卡儿世界坐标系统中给出几何描述来指定图元. 用于沿线段路径绘制像素的三种方法是DDA算法.Bresenham算法和中点算法,Bresenham算法和中点算法是等同的并且是最有效的.沿线段路径的像素的颜色位存储按照递增地计算内存地址的方式而有效完成.任何线段生成算法都可以通过分割线段并将分割的线段分布到可用处理器上来获得并行的实现. 圆和椭圆采用中点算

计算机图形学(二)输出图元_16_字符函数

OpenGL 字符函数 OpenGL基本库仅为显示单个字符和文字串提供了基本的支持.我们可以定义图3.61中的位图字符,并将一个位图集作为字库存储.一个文字串通过将从字库中选择的位图序列映射到帧缓存的 相邻位置来显示. 但是,OpenGL实用函数工具包(GLUT)中有一些预定义的字库.因此我们不用创建自己的位图字型库,除非需要显示GLUT中没有的字体.GLUT子程序可显示位图和轮廓字体.GLUT位图字体由OpenGL的glBitmap函数来绘制,而轮廓字体由折线边界(GL_LINE_STRIP)

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

 OpenGL像素阵列函数 OpenGL中有两个函数可用于定义矩形阵列的形状或图案.一个是位图,另一个是像素图.OpenGL也提供若干的函数用于存储.复制及管理像素值阵列. OpenGL位图函数 下面的函数定义了一个二值的阵列: glBitmap (width, height, x0, y0, xOffset, yOffset, bitShape); 函数中的参数width和height分别给出阵列bitShape的列数和行数.bitShape的每一元素赋值为0或1.值为1表示对应像素用前面设定

计算机图形学(二)输出图元_6_OpenGL曲线函数_2_中点画圆算法

中点画圆算法 如同光栅画线算法,我们在每个步中以单位间隔取样并确定离指定圆最近的像素位置.对于给定半径r和屏幕中心(xc,yc),可以先使用算法计算圆心在坐标原点(0, 0)的圆的像素位置,然后通过将xc加到x且yc加到y.从而把计算出的每个位置(x,y)移动到其适当的屏幕位置.在第一象限中,圆弧段从x = 0到x = y,曲线的斜率从0变化到-1.0.因此,可以在该八分圆上的正x方向取单位步长,并使用决策参数来确定每一步两个可能的y位置中,哪一个更接近于圆的位置.然后,其他七个八分圆中的位置可

计算机图形学(二)输出图元_3_画线算法_1_直线方程

画线算法 场景中的直线段由其两端点的坐标位置来定义.要在光栅监视器上显示一线段,图形系统必须先将两端点投影到整数屏幕坐标,并确定离两端点间的直线路径最近的像素位置.接下来将颜色值装人帧缓存相应的像素坐标处.视频控制器从帧缓存读出写入的颜色值并绘制屏幕像素.这一过程将一线段数字化为一组离散的整数位置.一般而言,这些位置是实际线路径的近似.例如,计算出的线位置(10.48, 20.51)转换为像素位置(10, 21).坐标值舍入到整数,引起除水平和垂直以外所有线段的阶梯效应("锯齿形"),

计算机图形学(二)输出图元_3_画线算法_3_Bresenham画线算法

Bresenham画线算法 本来在word中是有右下数的,一编辑在csdn中编辑就没有了.                         Bresenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算.另外Bresenham算法还可用于显示圆和其他曲线.图3.8和图3.9给出了绘制线段的屏幕局部.垂直轴表示扫描线位置,水平轴标识像素列.在这个例子中,我们以单位x间隔取样,并且需要确定每次取样时两个可能的像素位置中的哪一个更接近于线路径.从图3.

计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别

多边形填充区 一个多边形(polygon)在数学上定义为由三个或者更多称为顶点的坐标位置描述的平面图形,这些顶点由称为多边性的边(edge或者side)顺序连接.进一步来看,几何上要求多边形的边除了端点之外没有其他公共点.因此,根据定义,一个多边形在其单一平面上必须有其所有的顶点且边之间无交叉.多边形的例子有三角形.矩形.八边形和十六边形等.有时,任一有封闭折线边界的平面图形暗指一个多边形,而若其没有交叉边则称为标准多边形(( standard polygon)或简单多边形( simple po

计算机图形学和OpenGL(二)坐标系和绘制点线函数

这节开始前我们先了解一下图元的概念.图形软件包中用来描述各种图形元素的函数称为图形输出原语,也称图元(primitive).而描述对象几何要素的输出图元一般称为几何图元.点和线是最简单的几何图元,本节就会简单介绍点和线段的绘制方法. 一.坐标系统. 坐标系统一般分为屏幕坐标和OpenGL中的绘图坐标. 在上一节中我们简单的写了个示例程序,程序中介绍了gluOrtho2D命令.我们可以利用该命令设定一个二维笛卡尔坐标系.该函数的四个变量制定的是显示图形x和y坐标范围.所以我们可以使用下面代码制定一