C++ C++;OpenGL绘制房间

C++ C++;OpenGL绘制房间,c++,opengl,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 */ g

我正试图在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();

}
不管出于什么原因,这都不是我的全部观点!我已经看过我的向量,它似乎是正确的。。。但当你往里看时,你会发现:


我做错了什么?或者如果可能的话,有没有更好的方法来画一个房间而不是这个?谢谢

您的地板是顺时针定义的,而天花板是逆时针定义的(关于我从您的描述中暗示的法线)。启用消隐后,不会绘制每个朝向摄影机的四边形

为了解决这个问题,地板的定义如下:

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

对其他未显示的墙也执行同样的操作。也可以逆时针定义形状。

将形状放入注释(/*glvertex3d…*/)中。画2个形状,如果可以,画3个,如果可以,继续去谐。当你发现坏的glvertex3d四联图时,评论一下其他的,看看它真正的功能。如果不是这样的话,你必须把相机的Z镜头调低一些,但事实并非如此。其他可能的问题包括卷绕顺序、消隐或深度缓冲。