OpenGL基础:点的绘制与图形变换

需积分: 38 8 下载量 148 浏览量 更新于2024-07-13 收藏 525KB PPT 举报
"本资源主要讲解了OpenGL中的基本图形绘制,特别是点的绘制方法以及相关的矩阵变换操作。" 在OpenGL中,点的绘制是构建复杂图形的基础。通过`glBegin()`和`glEnd()`函数来定义一个绘制的开始和结束,而`glVertex3f()`函数则用于指定每个点的坐标。例如,以下代码会绘制两个点,一个在原点(0.0f, 0.0f, 0.0f),另一个在(10.0f, 0.0f, 0.0f): ```cpp glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0f); glVertex3f(10.0f, 0.0f, 0.0f); glEnd(); ``` 此外,可以使用`glPointSize()`函数来设置点的大小,例如`glPointSize(5.0f)`会让绘制的点具有5个像素的直径。 在OpenGL中,进行三维图形的绘制时,通常涉及一系列的变换流程,包括模型变换、视图变换、投影变换以及窗口至视区的变换。这些变换都是通过矩阵运算来完成的。OpenGL提供了多个矩阵操作函数,如: 1. `glMatrixMode()`:用来选择当前操作的矩阵栈,常见的有GL_MODELVIEW(模型视图矩阵)、GL_PROJECTION(投影矩阵)和GL_TEXTURE(纹理矩阵)。 2. `glLoadIdentity()`:将当前矩阵栈的栈顶置为单位矩阵,相当于清除之前的变换。 3. `glPushMatrix()`:复制栈顶矩阵并压入栈中,用于保存当前状态。 4. `glPopMatrix()`:弹出栈顶矩阵,恢复之前的状态。 5. `glLoadMatrix()`:用传入的矩阵替换栈顶矩阵,实现任意变换。 6. `glMultMatrix{fd}`:将传入的矩阵与栈顶矩阵相乘,并替换栈顶矩阵。 7. `glTranslate{fd}`, `glScale{fd}`, `glRotate{fd}`:分别用于执行平移、缩放和旋转的几何变换。 视口变换是将图形从三维空间映射到二维屏幕上的关键步骤。OpenGL允许用户定义视口,这可以是整个窗口或窗口的一部分,单位通常是像素。视口的定义有助于控制图形的显示范围和比例。 OpenGL提供了一套强大的工具来处理图形的绘制和变换,使得开发者能够创建复杂的3D场景。通过对点的绘制、矩阵变换以及视口管理的理解和应用,可以构建出各种生动的视觉效果。