繁体   English   中英

C ++ OpenGL绘制一个房间

[英]C++ OpenGL drawing a room

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

与其他没有出现的墙壁一样。 也可以逆时针定义它们。

暂无
暂无

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

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