计算机图形学
文章平均质量分 69
heyuchang666
这个作者很懒,什么都没留下…
展开
-
Draw Call介绍和优化
Unity每次在准备数据并通知GPU渲染的过程称为一次Draw Call。一般情况下,渲染一次拥有一个网格并携带一种材质的物体便会使用一次Draw Call。对于渲染场景中的这些物体,在每一次Draw Call中除了在通知GPU的渲染上比较耗时之外,切换材质与shader也是非常耗时的操作。Draw Call的次数是决定性能比较重要的指标。对于IOS平台上来说,Draw Call应该控制在20此以内,这个值可以在Game视图窗口中的Statistic面板中查看。原创 2015-11-15 17:26:08 · 1126 阅读 · 0 评论 -
untiy 3d ShaderLab读后感_0_目录
Unity3D引擎的渲染方面表现力和感染力是任何游戏的基本要素,但是在表现力和运行效率之间,开发人员不得不做出一些权衡,在游戏的运行效率,可适应平台,以及表现力之间做出选择和平衡。这个时候,只有项目开发人员深刻了解引擎的底层,才可能做出适当的选择,兼顾表现力和效率。Unity3D引擎底层的渲染框架,材质的组织,运作方式,从而能够在学习完后,在以后再面对鱼和熊掌的难题时,能够做出正确,甚至二者兼顾的完美选择。原创 2016-02-04 15:05:00 · 800 阅读 · 0 评论 -
Bezier曲线原理—动态解释
贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。在Flash4中还没有完整的曲线工具,而在Flash5里面已经提供出贝塞尔曲线工具。贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔(原创 2016-03-17 11:15:37 · 9055 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_6_三维观察设备
显示三维场景的图形监视器的设计,采用了从振动的柔性镜面反射CRT图像的技术。此类系统的操作原理如图2.16所示。当变焦反射镜振动时改变焦距长度。这些振动是同CRT上对象的显示同步的。因此,将该对象上的每一点从镜面反射到空间位置,对应于该点到指定观察位置的距离。这样就允许我们围绕着一个对象或场景行走,并从不同的角度进行观察。 图2.17给出了Genisco SpaceGraph系统,它采用振动镜将三维对象投影进25 cm x 25 cm x 25 cm空间。这个系统也能显示选定对一象在不同深度横截面的原创 2016-04-12 10:55:06 · 1588 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_2_光栅扫描显示器
使用CRT的普通图形监视器是基于电视技术的光栅扫描显示器(raster-scan display )。在光栅描系统中,电子束横向扫描屏幕,一次一行,从顶到底依次进行。每一行称为一个扫描行(scanline )。当电子束横向沿每一行移动时,电子束的强度不断变化,从而建立亮点组成的一个图案。图形定义保存在称为刷新缓存(refresh buffer)或帧缓存(frame buffer)的存储器中,这里的帧(frame)是指整个屏幕范围。该存储器保存一组对应屏幕所有点的强度值。电子束在屏幕上逐点移动时由从刷新缓存取原创 2016-04-08 10:53:22 · 4504 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_1_CRT原理
图形系统一般使用视频显示器作为其基本的输出设备。大部分视频监视器的操作是基于标准的 阴极射线管 (cathode-ray tube ,CRT) 设计的,但是也已经出现了其他 一些技术,并且固态监视器终究要占据主导地位 。 图2.2 给出了 CRT 的基本工作原理 。由电子枪发射出的电子束(阴极射线)通过聚焦系统和偏 转系统,射向涂覆有荧光层的屏幕上的指定位置 。在电子束轰击的每个位置,荧 光层都会产生 一个 小亮点。由于荧光层发射的光会很快衰减,因此必须采用某种方法来保持屏幕图像 。原创 2016-04-07 18:52:37 · 4986 阅读 · 7 评论 -
计算机图形学(一) 视频显示设备_7_光栅扫描系统
交互式光栅图形系统通常使用几个处理部件。除了中央处理器(CPU)以外,还使用一个视频控制器(video controller)或显示控制器(display controller)来控制显示设备的操作。简单光栅系统的组织结构如图2.24所示。其中,帧缓存可以在系统存储器的任意位置,视频控制器通过访问帧缓存来刷新屏幕。更高级的光栅系统除了使用视频控制器之外,还使用其他处理器作为协处理器和加速器来完成各种图形操作。原创 2016-04-12 12:06:13 · 4732 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_3_随机扫描显示器
当CRT用于随机扫描显示器(random-scan display)时,其电子束只在屏幕上显示图形的部分移动。电子束逐条地跟踪图形的组成线条,从而生成线条图。因此,随机扫描显示器也称为向量显示器(vector display)、笔划显示器(stroke-writing display)或笔迹显示器(calligraphic display)。图形的组成线条随机扫描系统按任意指定的顺序绘制并刷新(参见图2.9)。笔式绘图仪也以类似的方式工作,它是随机扫描、硬拷贝设备的一个例子。原创 2016-04-08 11:40:08 · 2390 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_4_彩色CRT监视器
CRT监视器利用能发射不同颜色光的荧光层的组合来显示彩色图形。不同荧光层的发射光组合起来,可以生成一种按其比例而定的可见颜色。显示彩色图形的一种方法是在屏幕上涂上多层不同的荧光粉。发射颜色由电子束在荧光层中的穿透深度决定。这种方法称为电子束穿透法(beam-penetration ),它常用于红、绿两层结构。 荫罩法(shadow-mask ) 常用于光栅扫描系统(包括彩色电视机),因为它能产生的彩色范围比电子束穿透法大得多。这种方法基于我们熟悉的由红、绿、蓝三原色来组合颜色的原理,称为RGB原创 2016-04-09 11:59:51 · 2334 阅读 · 0 评论 -
计算机图形学(一) 视频显示设备_5_平板显示器
我们可以把平板显示器分为两类:发射显示器(emissive display)和非发射显示器(nonemissive display )。发射显示器是将电能转换为光能的设备。等离子体显示板、薄膜光电显示器以及发光二极管都是发射显示器的实例。平板CRT也已发明出来,其中的电子束以平行于屏幕的方向加速,然后偏转90轰击屏幕。但是,还未证实平板CRT同其他发射设备一样可以实际应用。非发射显示器利用光学效应将太阳光或来自某些其他光源的光转换为图形模式。液晶设备是非发射平板显示器的最重要的例子。原创 2016-04-09 12:18:09 · 2415 阅读 · 0 评论 -
计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(上)
这里的方法类似于显示光栅圆。给定参数rx,ry和(xc,yc),首先确定以原点为中心的标准位置椭圆上的点(x,y),然后将这些点平移到以(xc,yc)为中心的椭圆上。如果希望显示不在标准位置的椭圆,那么就绕中心坐标旋转并对长轴和短轴重新定向。但目前仅考虑显示标准位置的椭圆,第4章将讨论变换对象方向和位置的通用方法。 中点椭圆算法将分成两部分应用于第一象限。图3.25给出了依据rx<ry的椭圆斜率对第一象限进行的划分。并通过在斜率绝对值小于1的区域内在x方向取单位步长,以及在斜率绝对值大于1的区原创 2016-04-26 18:36:31 · 3031 阅读 · 0 评论 -
计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(下)
假设已经在整数屏幕坐标中给定rx,ry和椭圆中心,在中点椭圆算法中我们仅需增量的整数运算来确定决策参数的值。增量r2y 、r2x和2r2yx和2r2xy仅需在程序的开始求值一次。中点椭圆算法可以概括为下列步骤:原创 2016-04-27 16:22:54 · 4235 阅读 · 0 评论 -
计算机图形学(二)输出图元
对于每一类场景,要描述每一对象的结构及其在场景中的坐标位置。图形软件包中用来描述各种图形元素的函数称为图形输出原语(graphics output primitive ),或简称为图元(primitive )。描述对象几何要素的输出图元一般称为几何图元。点的定位和直线段是最简单的几何图元。原创 2016-04-14 16:27:25 · 1971 阅读 · 0 评论 -
计算机图形学(二)输出图元_1_OpenGL画点函数
OpenGL中的坐标位置可以有二维、三维或四维。g1Vertex的后缀为2、3或4表示其坐标位置的维数。四维描述意味着齐次坐标(homogeneous-coordinate)表示,其中的齐次参数h(第四维坐标)是笛卡儿坐标值的比例因子。齐次坐标表示对利用矩阵形式表达变换操作很有用,第4章将对其进行详细讨论。由于OpenGL将二维作为三维的特殊情况来处理,任意(x, y)坐标描述等同于h =1时的(x, y, 0) 。原创 2016-04-14 17:18:21 · 4139 阅读 · 0 评论 -
计算机图形学(二)输出图元_3_画线算法_1_直线方程
场景中的直线段由其两端点的坐标位置来定义。要在光栅监视器上显示一线段,图形系统必须先将两端点投影到整数屏幕坐标,并确定离两端点间的直线路径最近的像素位置。接下来将颜色值装人帧缓存相应的像素坐标处。视频控制器从帧缓存读出写入的颜色值并绘制屏幕像素。这一过程将一线段数字化为一组离散的整数位置。一般而言,这些位置是实际线路径的近似。例如,计算出的线位置(10.48, 20.51)转换为像素位置(10, 21)。坐标值舍入到整数,引起除水平和垂直以外所有线段的阶梯效应(“锯齿形”),如图3.5所示。光栅线段特有的阶原创 2016-04-15 11:47:48 · 3980 阅读 · 0 评论 -
计算机图形学(二)输出图元_9_填充区图元
尽管有可能使用各种形状,但图形库一般不支持任意填充形状的描述。多数库函数要求填充区指定为多边形。由于多边形有线性边界,因而比其他填充形状更容易处理。另外,多数曲面可用一组适当的多边形面片来逼近,就如曲线可用一组直线段逼近一样。在使用光照效果和表面处理时,逼近曲面可以显示得相当逼真。利用多边形面片对一曲面进行的逼近有时称为表面细分(surface tessellation),或者可以使用多边形网格(polygon mesh)来拟合曲面。图3.41给出了一个用轮廓线形式的多边形网格逼近的金属圆柱体。作为线框图原创 2016-05-07 14:32:47 · 1299 阅读 · 2 评论 -
计算机图形学(二)输出图元_3_画线算法_2_DDA算法
数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法,基于使用等式(3.4)或等式(3.5)计算的&x或&y。在一个坐标轴上以单位间隔对线段取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。首先考虑如图3.6所示的具有正斜率的线段。例如,如果斜率小于等于1,则以单位x间隔(&x = 1)取样,并逐个计算每一个y值:下标k取整数值,从第一个点1开始递增直至最后端点。由于m可以是0与1之间的任意实数,所以计算出的y值必须取整。对于具有大于l的正斜率原创 2016-04-15 16:09:27 · 5377 阅读 · 0 评论 -
计算机图形学(二)输出图元_14_OpenGL像素阵列函数_2_像素图函数
将用彩色阵列定义的图案应用到一块帧缓存的像素位置。其中的width和height也分别给出像素位图的列数和行数(阵列pixMap )。参数dataFormat用一个OpenGL常量赋值,指出如何为阵列指定值。例如,使用常量GL_BLUE可指定所有像素都使用蓝色,使用常量GL_BGR可按蓝、绿、红次序指定颜色分量。还可能有一些其他的颜色指定方法,我们在下一章将详细关注颜色选择的方法。参数dataType设定为OpenGL常量GL_BYTE,GL_INT或GL_FLOAT,以指定阵列中颜色的数据类型。该颜色阵列原创 2016-05-24 15:10:56 · 1673 阅读 · 0 评论 -
计算机图形学(二)输出图元_14_OpenGL像素阵列函数_3_光栅操作
除了将像素阵列存入缓存,我们可以从缓存中取出一块值或将一块值复制到另一缓存区域。可以对像素阵列执行各种其他操作。一般情况下,术语光栅操作(raster operation)用于描述以某种方式处理一个像素阵列的任何功能。将一个像素阵列的值从一个位置移到另一位置的光栅操作也称为像素值的bitblt移动(bit-block transfer ),尤其是在该功能由硬件实现时。在多层次的系统中,术语pixblt用于块移动。原创 2016-05-24 15:18:28 · 1569 阅读 · 0 评论 -
计算机图形学(二)输出图元_10_多边形填充区_2_分割凹多边形
接着按多边形边界顺序计算连续的边向量的叉积。如果有些叉积的z分量为正而另一些为负,则多边形为凹多边形;否则,多边形为凸多边形。这意味着不存在三个连续的顶点共线,即不存在连续两个边向量其叉积为0。如果所有顶点共线,则得到一个退化多边形(一条线段)。我们可以通过逆时针方向处理边向量来应用向量方法。如果有一个叉积的z分量为负值(如图3.43所示),那么多边形为凹且可沿叉积中第一边向量的直线进行切割。下面的例子给出了分割凹多边形的这一方法。原创 2016-05-12 11:45:03 · 7011 阅读 · 0 评论 -
计算机图形学(二)输出图元_10_多边形填充区_3_内-外测试
各种图形处理经常需要鉴别对象的内部区域。识别简单对象如凸多边形、圆或椭圆的内部通常是一件很容易的事情。但有时我们必须处理较复杂的对象。例如,我们可能描述一个图3.46所示的有相交边的复杂填充区。在该形状中,xy平面上哪一部分为对象边界的“内部”、哪一部分为“外部”并不总是一目了然的。奇偶规则和非零环绕规则是识别平面图形内部区域的两种常用方法。原创 2016-05-12 14:03:35 · 5493 阅读 · 2 评论 -
计算机图形学(二)输出图元_3_画线算法_3_Bresenham画线算法
Bresenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。另外Bresenham算法还可用于显示圆和其他曲线。图3.8和图3.9给出了绘制线段的屏幕局部。垂直轴表示扫描线位置,水平轴标识像素列。在这个例子中,我们以单位x间隔取样,并且需要确定每次取样时两个可能的像素位置中的哪一个更接近于线路径。从图3.8中的左端点开始,需要确定下一个取样像素位置是(11, 1l)还是(1 1, 12)。类似地,图3.9则给出了像素位置(50,50)为左端点的具有负斜率原创 2016-04-18 15:12:00 · 8857 阅读 · 1 评论 -
计算机图形学(二)输出图元_4_并行画线算法
而利用并行计算机,则可通过将计算分割到可用的多个处理器中来得到线段的像素位置。分割问题的一种解决方法是将现有的顺序算法放到多个处理器上。我们也可以寻找其他处理办法,从而使像素位置能以并行方式有效地计算。在设计并行算法中,重要的是要考虑平衡可用处理器间的处理负载。 给定np个处理器,我们可以通过把线段分割成np个子段,并在每个子段中同时生成线段而建立起并行的Bresenham画线算法。 上面讨论过的线段生成算法顺序地确定像素位原创 2016-04-18 16:47:27 · 3881 阅读 · 0 评论 -
计算机图形学(二)输出图元_5_帧缓存值的装载
实现线段和其他对象显示函数的最后一步工作是设定帧缓存的颜色值。由于扫描转换算法以连续的单位间隔生成像素位置,因此扫描转换算法可使用增量方法在每一步高效地存取帧缓存。作为一个特殊的例子,假设帧缓存矩阵是以行为主要顺序进行编址,并且像素位置从屏幕左上方((0,0)变化到屏幕右上方气(xmax,ymax)原创 2016-04-19 11:59:55 · 2798 阅读 · 0 评论 -
计算机图形学(二)输出图元_10_多边形填充区_4_多边形表
场景中的对象一般用一组多边形面片来描述。实际上,图形软件包经常提供以多边形网格形式描述表面形状的函数。对每一个对象的描述包括指定多边形面片的几何信息和其他表面参数(如颜色、透明性及光反射特性)。在输入每个多边形的信息时,数据放进一些表格中等待后续处理、显示和场景的对象管理。这些多边形数据表分成两组来组织:几何数据表和属性数据表。几何数据表包含顶点坐标和标识多边形面片空间方向的参数。对象的属性信息包含指定对象的透明程度及其表面的反射性能和纹理特征。原创 2016-05-13 20:33:33 · 5124 阅读 · 0 评论 -
计算机图形学(二)输出图元_15_字符图元
和其他图元一样,字符的几何描述在世界坐标系中给出,该信息由观察变换映射到屏幕坐标系。位图字符使用矩形网格的二进制值及网格参考位置来描述。该位置随后被映射到帧缓存中的指定位置。轮廓字符由一组用曲线或线段连接的坐标位置和参考位置来定义,该参考位置随后也映射到给定的帧缓存位置。参考位置可用于一个字符或一个字符串。一般情况下,字符子程序可生成二维或三维字符显示。原创 2016-05-27 10:06:39 · 2052 阅读 · 0 评论 -
计算机图形学(二)输出图元_6_OpenGL曲线函数_1_圆生成算法
生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中。但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式。OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集。我们可以使用有理B样条显示圆、椭圆和其他二维曲线。此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面、锥面和其他形体)的函数。然而,所有这些函数比本章中介绍的基本图元应用得更多,因此我们将在第7章进一步讨论这一原创 2016-04-19 19:25:06 · 3576 阅读 · 1 评论 -
计算机图形学(二)输出图元_6_OpenGL曲线函数_5_其他曲线
许多曲线函数在对象建模、动画轨迹的描述、数据和函数的图形化以及其他图形应用中是十分有用的。常见的曲线包括圆锥曲线、三角和指数函数、概率分布、通用多项式和样条函数。这些曲线的显示可采用类似于前面讨论的圆和椭圆函数来生成。沿曲线轨迹的位置可直接从表达式y =f (x)或参数方程中得到。此外,还可以使用增量中点算法绘制用隐式函数f(x,y) = 0描述的曲线。 显示一指定的曲线函数的简单方法是使用直线段来逼近曲线。这时,对于要得到沿曲线轨迹的等距线段的端点位置,则可以使用参数表达式。也可以按曲线的斜率选择原创 2016-05-05 16:48:37 · 5518 阅读 · 0 评论 -
计算机图形学(二)输出图元_7_并行曲线算法
在曲线生成中使用的并行方法类似于显示线段中使用的方法。我们既可采用顺序算法按曲线分段分配处理器,也可以提出其他方法将处理器分配给屏幕的不同区域。 显示圆的并行中点方法是,将45°到90°的圆弧分成等长子圆弧,并给每段子圆弧配置一个处理器。然后类似于并行Bresenham画线算法,需要对每个处理器建立初始y值并确定参数pk的值。接着计算整个子圆弧的像素位置,并通过对称性得到其他八分圆中的位置。同样,并行椭圆中点算法将第一象限内的椭圆弧分割成等长弧,并将这些弧分配给各个处理器,在其他象限中的像素位置可由原创 2016-05-05 17:00:54 · 3754 阅读 · 0 评论 -
计算机图形学(二)输出图元_16_字符函数
这里参数font用GLUT符号常量赋值,用来指定一特定字型集,参数character赋以ASCII编码或其他要显示的字符。这样,要显示大写的"A",可以使用ASCII编码65或指定为‘A’。同样,编码66与‘B’等效,编码97与小写字符‘a’等效,编码98与‘b’等效,依次类推。固定宽度或比例间隔字体都可以使用。可用GLUT_BITMAP_8_Y_13或GLUT_BITMAP_9_BY_15来选择一种固定宽度字体并确定其参数。也可GLUT_BITMAP_TIMES_ROMAN_10或GLUT_BITMAP_原创 2016-05-30 21:27:16 · 4439 阅读 · 2 评论 -
计算机图形学(二)输出图元_6_OpenGL曲线函数_3_椭圆生成算法
通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,那么椭圆的通用方程可以表示为原创 2016-04-22 15:55:47 · 2792 阅读 · 0 评论 -
计算机图形学(二)输出图元_8_像素编址和对象的几何要素
使用屏幕网格坐标,我们让屏幕坐标位置(x, y)上的像素占据对角位置在(x, y)和(x+l, y+l)处的单位正方形。这种像素编址方案有很多优点:它避免了半整数像素边界,实现了精确的对象表示,并简化了包含在许多扫描转换算法和其他光栅程序中的处理。 在前面几节中讨论的画线及曲线生成算法仍可用于以屏幕网格坐标表示的输入位置。这些算法中的决策参数将简化为对屏幕网格的间距差的度量,而不再是像素中心之间的间距差。原创 2016-05-07 13:49:57 · 2036 阅读 · 0 评论 -
计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别
术语退化多边形(degenerate polygon)常用来描述共线或重叠坐标位置的顶点集。共线顶点生成一线段。重叠顶点位置可以生成有多余线段、重叠边或长度为0的边的多边形。有时术语退化多边形也用于少于三个坐标位置的顶点队列。为了软件的鲁棒性,图形软件包可以拒绝退化或非平面的顶点集。但这要求额外的识别该问题的处理,因此图形系统常把这种考虑留给程序员。 凹多边形也会有相关的一些问题。对凹多边形的填充算法和其他子程序的实现比较复杂,因此在处理前常将凹多边形分割成一组凸多边形以便提高效率。和其他的多原创 2016-05-07 17:25:37 · 4285 阅读 · 0 评论 -
计算机图形学(二)输出图元_17_图形分割
有的图形软件包中提供了子程序,描述由多个命名部分组合而成的图形并管理每一部分。使用这些函数可以创建、编辑、删除或移动图形的一个组成部分。我们也可使用图形软件的这个功能来进行层次式建模(以后会说到),其中一个对象可以用包括一定层次的子对象的树结构方式来描述。 图形子部分的名称有多种说法。有些图形软件包称它们为结构(structure ),另一些则称为段( segment)或对象(object)。同样,在不同的图形软件包中允许的对子部分的操作也不相同。例如,建模软件包提供很多描述和管理图形元素的操原创 2016-05-31 19:40:49 · 3407 阅读 · 0 评论 -
计算机图形学(二)输出图元_18_显示列表_1_创建和命名OpenGL显示表
把对象描述成一个命名的语句序列(或任何其他的命令集)并存储起来既方便又高效。在OpenGL中使用称为显示表(display list)的结构可以做到这一点。一旦建立了显示表,就可以用不同的显示操作来多次引用该表。在网格中,描述图形的显示表存放在服务器中,以避免每次显示场景时都要传送表中的命令。我们可以为以后的执行来建立并存储显示表,或指定表中的命令立即执行。显示表对层次式建模特别有用,因为一个复杂的对象可以用一组简单的对象来描述。原创 2016-05-31 19:58:25 · 3630 阅读 · 0 评论 -
计算机图形学(二)输出图元_18_显示列表_2_执行OpenGL显示表
要执行的显示表数量赋给参数nLists,而参数listIDArray是显示表标识的数组。一般而言,listIDArray可包含任意多的元素,而无效的标识会被忽略。同样,listIDArray中的元素可指定为多种数据格式,而参数arrayDataType用来指出数据类型,例如GL_BYTE,GL_INT,GL_FLOAT, GL_3_BYTES或GL_4_ BYTES。显示表标识通过将listIDArray中一个元素的值与offsetValue的整数值相加而得。offsetValue的默认值为0。 这原创 2016-06-01 11:47:47 · 3701 阅读 · 0 评论 -
计算机图形学(二)输出图元_18_显示列表_3_删除 OpenGL 显示表
删除 OpenGL 显示表参数startID给出最前面的显示表标识,而参数nLists给出要删除的显示表总数原创 2016-06-01 21:18:22 · 3699 阅读 · 0 评论 -
计算机图形学(二)输出图元_10_多边形填充区_6_前向面与后向面
由于我们通常处理包围对象内部的多边形表面,因此需要区分每个面的两侧。向着对象内部的一侧称为后向面(back face ),可见或朝外的一侧称为前向面(front face )。判定一个点相对于多边形前向面和后向面的空间位置是许多图形算法的基本任务,例如在判定对象可见性中。每一多边形包含在将空间分为两区域的一个无限平面中。任何一个不在平面上且可看见对象前向面的点称为在平面的前方(或外部),因此该点在对象的外部。任何可看见多边形后向面的点均称为在平面后方(或内部)。位于所有多边形所在平面后方(内部)的点是对象的原创 2016-05-20 14:50:28 · 2507 阅读 · 0 评论 -
计算机图形学(二)输出图元_20_章节总结(上)
用于沿线段路径绘制像素的三种方法是DDA算法、Bresenham算法和中点算法,Bresenham算法和中点算法是等同的并且是最有效的。沿线段路径的像素的颜色位存储按照递增地计算内存地址的方式而有效完成。任何线段生成算法都可以通过分割线段并将分割的线段分布到可用处理器上来获得并行的实现。 圆和椭圆采用中点算法并根据其对称性进行有效而精确的扫描转换。其他二次曲线(抛物线和双曲线)也可以使用类似的方法进行绘制。分段的连续多项式的样条曲线广泛地应用于动画和计算机辅助设计中。曲线生成的并行实现能通过与原创 2016-06-08 18:39:26 · 2172 阅读 · 0 评论 -
计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(上)
描述填充多边形的OpenGL过程与描述点和折线类似,但有一个例外。函数glVertex用来输入多边形的一个顶点坐标,而完整的多边形用从glBegin到glEnd之间的一组顶点来描述。但有另外一个函数可以用来显示具有完全不同格式的矩形。 默认时多边形内部显示为单色,由当前颜色设定确定其颜色。作为选项(下面的内容中叙述),可以用图案填充多边形且显示多边形的边作为内部填充的边界。函数glBegin中指定多边形填充区的变量可使用6个不同的符号常量。这6个基本常量可用来显示单一填充多边形、一组不相连的原创 2016-05-21 17:46:52 · 10515 阅读 · 0 评论