I have just started using openGL which i am teaching myself from a book. In my book i am told to build quads using triangle strips because it is more efficient. The book uses these vertices to create the quad.
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);
I don't understand why the z axis is not constant, it seems like the z axis should remain constant and the y axis should change to make the square display in 2d. I dont see why the z axis is used.
Here is the rest of the code
To load vertices in buffer
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * vertices.size(), &vertices[0], GL_STATIC_DRAW);
To display square
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);
Despite me not understanding this however, the square is still displayed properly, so it must work.
For a quad to make sense, all four points should lie in a plane. It does not have to be a plane with z=const. If you look at those vertices, you might discover that y is constantly 0 for all 3 points, so the quad is defined in the xz plane. YOu can also see that the camera is placed at (0, 5, 0.1), looking down to the origin, so using xz plane does make sense.