在 OpenGL 里面,一个多边形至少有 3 个顶点,所有边不能相交,并且只能直接绘制出凸多边形,也就是说可以间接的画出凹多边形,对于任意一个凹多边形我们都可以把它看作为多个凸多边形拼凑起来并且隐藏掉凹多边形内部的所有边构成,实际上,用 OpenGL 绘制凹多边形就是这个思想,本身也提供了隐藏边的函数,这里就不多说了。
绘制形状(这里的形状指 三角形,四边形,多边形等)与前面说过的绘制 点 和 直线 还是有很大不同的。因为形状具有两面性,即前面和后面,我们可以自己指定前面和后面,同时也可以单独指定前面和后面的有些性质。下面具体介绍。
(一)前面 和 后面:
默认情况下,如果绘制多边形的顶点的排列顺序是逆时针的,则该多边形是前面的,即展现在我们眼前的是前面,和我们平时看物体一样;如果顶点的排列顺序是顺时针的,则该多边就是后面的,即展现在我们眼前的是背面。
当然我们是可以改变这种默认性质的。这里就要用到一个函数:glFrontFace() ,该函数有一个参数,且只能是 GL_CW 或 GL_CCW 中的一个。GL_CW 表示按顺时针顺序定义的多边形是前面的,即与默认情况相反;GL_CCW 表示按逆时针顺序定义的多边形是前面的,即与默认情况相同。
(二)填充模式:
一个多边形可以进行填充也可以不填充,这都是可以设置的,利用到函数 glPolygonMode() ,该函数有两个参数,第一个参数表示将要设置填充模式的面,即前面或后面或前面和后面同时指定,分别用常量 GL_FRONT , GL_BACK GL_FRONT_AND_BACK 表示; 第二个参数指定绘制模式,可以是 GL_POINT , GL_LINE , GL_FILL ,GL_POINT 表示只在多边形的顶点画点,GL_LINE 表示只画多边形的边,即外轮廓,GL_FILL 表示要填充多边形。
当我们选择 GL_FILL 时,我们还可以自定义填充模式,就像我们前面自定义直线的线型一样。填充模式是一个 32 * 32 的位图,其中的每一位代表屏幕上的一个点,0 表示不显示,1 表示显示。在表示位图时,以一个字节为单位,以GLubyte 为数据类型,从左下角开始自左向右自下而上地表示。
就像前面我们要使直线的线型起作用一样,这里也要先使自定义填充模式能够使用,如下:
glEnable(GL_POLYGON_STIPPLE);
要恢复正常填充模式则如下:
glDisable(GL_POLYGON_STIPPLE);
设置填充模式如下:
glPolygonStipple(GLubyte 型数组的自定义填充模式);
上面说的这些不只是对多边形,对三角形,四边形也是如此,而且设置的参数和函数也都完全一样,因为对于它们我们也看作是两面的。
下面是个画多边形的例子的主要代码:
GLubyte polygonFillPattern[] =
{
0x00 , 0x00, 0x00 , 0x00 , // 其他略写了
};
glPolygonMode(GL_FRONT_AND_BACK , GL_FILL);
glPolygonStipple(polygonFillPattern);
glEnable(GL_POLYGON_STIPPLE);
glBegin(GL_POLYGON);
glVertex2f(-0.8f , 0.8f);
glVertex2f(-0.8f , -0.8f);
glVertex2f(0.8f , -0.8f);
glVertex2f(0.8f , 0.8f);
glEnd();
glDisable(GL_POLYGON_STIPPLE);
分享到:
相关推荐
计算机图形学多边形属性字符处理 计算机图形学是计算机科学的一门重要分支,它研究如何使用计算机来生成和处理图形、图像和视频等视觉信息。在计算机图形学中,多边形属性字符处理是非常重要的一部分。这篇文章将...
属性多边形是一种新型的系统状态表示方法,其通过几何图形的形式将系统中各个属性的状态进行可视化展示,进而直观地揭示出系统在不同状态下的表现。例如,在一个电气系统中,属性多边形可以反映电压、电流、功率等...
以上仅是部分内容的概述,具体问题如多边形旋转、比例变换、对称变换矩阵的求解,以及各种裁剪算法、图形处理原理等,需要根据实际题目中的图示和具体要求进行详细解答。由于篇幅限制,无法在此逐一展开。学习计算机...
对于平行四边形,特别强调其对边平行且相等的特性,这是区分它与其他四边形的关键。 教学反思中提到,学生们能够根据已有知识和经验,理解多边形的概念,这表明他们在接触新知识时,能够有效地运用已学过的知识进行...
在三维图形中,物体的表面特性(如颜色、材质)和光源的属性(位置、强度、类型)共同决定了物体在虚拟环境中的表现。常见的光照模型有Lambertian、Phong、Blinn-Phong等,理解它们的计算公式和应用场景是重要的考点...
计算机图形学与其他学科有着密切关系。例如,它试图从非图像形式的数据生成图形图像,这与数字图像处理不同,后者更注重于对已有的图像进行处理以改善视觉效果。计算机视觉则专注于让计算机模仿人类视觉功能,实现...
每个顶点都有自己的位置、颜色、法线等属性,这些属性共同决定了模型的形状和外观。模型的构建通常需要使用3D建模软件,如Blender或Maya。 接下来,我们讨论运动学,即物体如何在空间中移动。在这个实验中,自行车...
根据给定的文件信息,我们可以总结出一系列关于计算机图形学的重要知识点,这些知识点涵盖了计算机图形学的基本概念、图形生成算法、图像显示技术以及图形变换等多个方面。以下是对这些知识点的详细解析: ### ...
JavaScript可以监听用户的点击事件,当用户与多边形元素交互时,可以改变元素的属性,比如改变颜色、透明度,甚至显示隐藏的内容。此外,JavaScript库如jQuery简化了DOM操作,使得添加、删除或修改HTML元素变得更加...
此外,未提及的其他图元属性可能包括颜色、填充模式、透明度等,它们共同决定了图形的外观和风格。在实际编程中,这些属性的设置和调整是创建复杂图形和视觉效果的关键。 在实际的图形软件包中,除了基本的绘图函数...
1. 计算机图形学中的图形由几何元素(点、线、面、体)和视觉属性(明暗、灰度、色彩)组成,这些元素共同构建了虚拟世界的视觉表现。图形系统应具备输入、处理、输出等功能,以实现从用户操作到屏幕上显示图像的...
计算机图形学是一门研究如何在计算机中创建、处理和显示图形的学科。...**图形图像处理相关学科**:包括图像处理、计算机视觉、计算机辅助设计、虚拟现实等,它们相互关联,共同推动图形图像技术的发展。
- 计算机图形学中的图形是由点、线、面、体等几何元素和明暗、灰度、色彩等视觉属性构成的抽象表示,它们共同创造出视觉上的图像。 - 一个完整的计算机图形系统通常包括输入、处理、输出等功能。输入设备如鼠标和...
区域填充是将特定颜色或属性填充到图形内部的过程,可以基于多边形或像素进行。连通性概念在这里至关重要,四连通和八连通区域定义了像素之间的邻接关系。区域填充算法通常需要一个种子像素作为起点,并遍历整个区域...
1. 计算机图形学中的图形由几何元素如点、线、面、体等,以及视觉属性如明暗、灰度、色彩构成。它们是从现实世界抽象出来的,具有灰度、色彩和形状的表现形式。 2. 一个完整的计算机图形系统具备输入、处理、输出等...
综上所述,GPU架构与图形管线紧密相连,共同推动了现代计算机图形学的发展,使得复杂精细的3D场景能够在实时应用中得以呈现。随着技术的不断进步,未来的GPU架构和图形管线有望带来更加震撼的视觉体验。
在这个项目中,枫叶可能被设计为多个多边形组合,每个多边形代表枫叶的一部分,通过调整多边形的顶点数量和位置,可以创建出“低多边形”风格的图形,这是一种近年来流行的设计趋势,旨在以简洁的几何形状近似复杂的...
它由物体的几何模型(如几何参数)和物理属性(如属性参数)共同组成。 **3. 计算机图形学的研究内容** 计算机图形学的研究内容十分广泛,主要包括以下几个方面: - **图形硬件**:包括显示设备、输入设备等。 - ...
《CSS3与SVG技术在创建低多边形蝙蝠侠动画中的应用》 在现代网页设计中,CSS3和SVG已经成为了不可或缺的技术工具,它们共同为网页带来了丰富的视觉效果和流畅的动态体验。本篇文章将深入探讨如何利用CSS3和SVG来...