如果您不想使用着色器,则必须创建兼容性配置文件OpenGL Context。使用兼容性配置文件,您可以使用即时模式glBegin / glEnd 序列。您必须使用 OpenGL triangle primitive 类型之一。例如:
struct Vertex
{
float x, y, z;
};
glBegin(GL_TRIANGLES);
for (auto &vertex : vertices)
{
glVertex3f(vertex.x, vertex.y, vertex.z);
}
glEnd();
您也可以使用固定函数属性并定义一个顶点数据数组。在这种情况下,您必须通过glDrawArrays 绘制三角形。例如:
glVertexPointer(3, GL_FLOAT, 0, vertices.data());
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
glDisableClientState(GL_VERTEX_ARRAY);
无论如何,您都必须指定正确的投影和模型视图矩阵。见glMatrixMode。矩阵取决于顶点坐标的比例。当前矩阵由Identity matrix 初始化。因此,如果您不设置矩阵,则顶点坐标必须在规范化的设备空间中。 NDC 是从 (-1, -1, -1) 的左、下、近和 (1, 1, 1) 的右、上、远的唯一立方体。 NDC 坐标系是左手系。在视口上的投影中,x 轴指向右侧,y 轴指向上方,z 轴指向视图,因此深度由 z 定义。