为什么在三角形带中使用z坐标开gl



我刚刚开始使用openGL,这是我在一本书中自学的。在我的书中,我被告知要使用三角形条来构建四边形,因为它更有效。本书使用这些顶点创建四边形。

    vertices.push_back(-0.5f);
    vertices.push_back(0.0f);
    vertices.push_back(0.0f);
    vertices.push_back(0.5f);
    vertices.push_back(0.0f);
    vertices.push_back(0.0f);
    vertices.push_back(-0.5f);
    vertices.push_back(0.0f);
    vertices.push_back(-1.0f);
    vertices.push_back(0.5f);
    vertices.push_back(0.0f);
    vertices.push_back(-1.0f);

我不明白为什么z轴不恒定,似乎z轴应该保持恒定,y轴应该改变,以在2d中显示正方形。我不明白为什么要用z轴。

这是的其余代码

在缓冲区中加载顶点

glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * vertices.size(), &vertices[0], GL_STATIC_DRAW);

显示方形

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0.0, 5.0, 0.1, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);

尽管我不理解这一点,但广场仍然展示得很好,所以它必须发挥作用。

要使四边形有意义,所有四个点都应该位于一个平面上。它不必是z=const的平面。如果你观察这些顶点,你可能会发现所有3个点的y都是0,所以四边形是在xz平面中定义的。YOu还可以看到相机放置在(0,5,0.1)处,向下看原点,因此使用xz平面确实有意义。

您沿着y轴观看,因此y是常数,使正方形垂直于视口。通过调用gluLookAt(),可以定义相机的位置和观看方向。您可以修改gluLookAt的参数,使相机沿z方向观看。在这种情况下,z在你对平方的定义中应该是常数。

看看http://www.opengl.org/sdk/docs/man2/xhtml/gluLookAt.xml。