C ++ OpenGL绘制一个房间

时间:2013-11-02 00:59:23

标签: c++ opengl

我正试图在openGL中画一个方形房间,我有这个:

void drawWalls()
{

glColor3f(1,0,0);
glPushMatrix();
//glRotatef(0,0,0,1);
//glScalef(2,1,2);
glBegin(GL_QUADS);
/* Floor */
glVertex3f(-1,-1,-1);
glVertex3f(1,-1,-1);
glVertex3f(1,-1,1);
glVertex3f(-1,-1,1);
/* Ceiling */
glVertex3f(-1,1,-1);
glVertex3f(1,1,-1);
glVertex3f(1,1,1);
glVertex3f(-1,1,1);
    /* Walls */
glVertex3f(-1,-1,1);
glVertex3f(1,-1,1);
glVertex3f(1,1,1);
glVertex3f(-1,1,1);

glVertex3f(-1,-1,-1);
glVertex3f(1,-1,-1);
glVertex3f(1,1,-1);
glVertex3f(-1,1,-1);

glVertex3f(1,1,1);
glVertex3f(1,-1,1);
glVertex3f(1,-1,-1);
glVertex3f(1,1,-1);

glVertex3f(-1,1,1);
glVertex3f(-1,-1,1);
glVertex3f(-1,-1,-1);
glVertex3f(-1,1,-1);
glEnd();

glPopMatrix();

}

无论出于何种原因,它并没有吸引我的所有方面!我查看了我的矢量,看起来是正确的......但是当你向内看时,你会看到:

walls

我做错了什么?或者,如果可能的话,是否有更好的方式来绘制房间而不是这个?感谢

1 个答案:

答案 0 :(得分:4)

您的地板是顺时针定义的,而您的天花板是逆时针定义的(关于我从您的描述中隐含的法线)。启用剔除后,不会绘制每个背离相机的四边形。

为了解决这个问题,必须像这样定义地板:

(-1, -1, -1)
(-1, -1, 1)
(1, -1, 1)
(1, -1, -1)

对其他没有出现的墙壁做同样的事情。也可以逆时针定义它们。