Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在三角形条形图中使用z坐标_C++_Windows_Opengl_Gl Triangle Strip - Fatal编程技术网

C++ 为什么在三角形条形图中使用z坐标

C++ 为什么在三角形条形图中使用z坐标,c++,windows,opengl,gl-triangle-strip,C++,Windows,Opengl,Gl Triangle Strip,我刚刚开始使用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);

我刚刚开始使用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在正方形的定义中应该是常数


看一看。

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


看一看。

为了让四边形有意义,所有四个点都应该位于一个平面上。它不必是z=const的平面。如果查看这些顶点,可能会发现所有3个点的y始终为0,因此四边形在xz平面中定义。您还可以看到相机放置在0、5、0.1处,向下看原点,因此使用xz平面是有意义的。

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

我的书还没有介绍gluLookAt,但这是有意义的thanks@Popgalop:注意,gluLookAt在这里的用法非常好。他们使用将摄像机位置的z设置为0.1的方法来避免直视,因为在这种情况下他们使用了错误的上方向向量。另外,gluLookAt和您发布的代码中的许多其他内容都已被弃用,并已从OpenGL的moderen核心配置文件中删除。你可能会考虑用现代的方式学习……我的书还没有读过,但这是有道理的thanks@Popgalop:注意,gluLookAt在这里的用法非常好。他们使用将摄像机位置的z设置为0.1的方法来避免直视,因为在这种情况下他们使用了错误的上方向向量。另外,gluLookAt和您发布的代码中的许多其他内容都已被弃用,并已从OpenGL的moderen核心配置文件中删除。你可以考虑用现代的方式学习。。。