繁体   English   中英

为什么三角形条带中使用的z坐标打开gl

[英]Why is z coordinates used in a triangle strip open 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);

尽管我不理解这一点,但广场仍然正确显示,所以它必须有效。

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

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

对于有意义的四边形,所有四个点应该位于一个平面中。 它不必是z = const的平面。 如果查看这些顶点,您可能会发现y对于所有3个点始终为0,因此四边形在xz平面中定义。 你也可以看到相机放在(0,5,0.1),俯视原点,所以使用xz平面确实有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM