glVertex3f - OpenGL 函数
glVertex3f
函数功能
OpenGL 中用来指定 3D 坐标点的函数。它是 OpenGL 绘制图形时的一个基本函数,通常用来定义图形的顶点。具体来说,glVertex3f 定义了一个三维空间中的点,该点的坐标由三个浮动参数 (x, y, z) 给定。
语法
glVertex3f(GLfloat x, GLfloat y, GLfloat z);
参数:
x:顶点的 X 坐标,浮动类型 (GLfloat)。
y:顶点的 Y 坐标,浮动类型 (GLfloat)。
z:顶点的 Z 坐标,浮动类型 (GLfloat)。
用法
glVertex3f 通常是在 glBegin 和 glEnd 之间调用的,指定当前绘制的图形的一个顶点。OpenGL 使用这些顶点信息来构建图形(如三角形、线条或点等)
例子
// 绘制点
glBegin(GL_POINTS);
glVertex3f(1.0f, 2.0f, 3.0f); // 点的坐标
glEnd();
//绘制线段
glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.0f); // 线段的起始点
glVertex3f(1.0f, 1.0f, 1.0f); // 线段的结束点
glEnd();
注意
- glVertex3f 是指定顶点位置的函数,它并不会直接绘制图形。绘制图形是通过在 glBegin() 和 glEnd() 之间定义顶点的方式来完成的。具体绘制的形状取决于 glBegin() 中的参数(如 GL_POINTS、GL_LINES、GL_TRIANGLES 等)。
- 如果要绘制多个顶点,必须使用多次 glVertex3f 调用,依赖于每次调用设置一个新的顶点。
绘制线条
glVertex3f 配合 glBegin(GL_LINES) 或 glBegin(GL_LINE_STRIP) 来实现。两者之间的区别是:
- GL_LINES:每对顶点会被连接成一条独立的线段。
- GL_LINE_STRIP:顶点将按顺序连接,形成一条连续的线
使用 GL_LINES 绘制点集中的线条
假设我们有一个点集points,每两个点之间都画一条线段
glBegin(GL_LINES); // 开始绘制线段
for (size_t i = 0; i < points.size(); i += 2) {
// 每两个点形成一条线段
glVertex3f(points[i].x, points[i].y, points[i].z);
glVertex3f(points[i+1].x, points[i+1].y, points[i+1].z);
}
glEnd();
每次通过 glVertex3f 指定两个点,OpenGL 会将它们连接成一条线段
使用 GL_LINE_STRIP 绘制连续线条
将所有的点按顺序连接成一条连续的线
glBegin(GL_LINE_STRIP); // 开始绘制连续线
for (const auto& pt : points) {
glVertex3f(pt.x, pt.y, pt.z);
}
glEnd();
在 GL_LINE_STRIP 中,OpenGL 会将每个顶点依次连接成一条连续的线段,直到所有点都连接完。