2013-12-23 19 views
1

我想要一个矩形立方体。一面墙面有错误的一面,所以我看不到粉红色。这是立方体的好的一面:无法正确定义一个四边形

good side

在立方体的背面有墙灰背面: bad side

这是代码:

glBegin(GL_QUADS); 
    //floor 
    glMaterialfv(GL_FRONT, GL_DIFFUSE, floor_diffuse); 
    glVertex3f(-floor_size_x/2, 0, floor_size_z/2); 
    glVertex3f(floor_size_x/2, 0, floor_size_z/2); 
    glVertex3f(floor_size_x/2, 0, -floor_size_z/2); 
    glVertex3f(-floor_size_x/2, 0, -floor_size_z/2); 

    //roof 
    glMaterialfv(GL_FRONT, GL_DIFFUSE, roof_diffuse); 
    glVertex3f(-floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, -floor_size_z/2); 
    glVertex3f(-floor_size_x/2, wall_height, -floor_size_z/2);  
    //walls 
    glMaterialfv(GL_FRONT, GL_DIFFUSE, walls_diffuse); 
    glVertex3f(-floor_size_x/2, 0, floor_size_z/2); 
    glVertex3f(-floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(-floor_size_x/2, wall_height, -floor_size_z/2); 
    glVertex3f(-floor_size_x/2, 0, -floor_size_z/2); 

    glVertex3f(floor_size_x/2, 0, floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, -floor_size_z/2); 
    glVertex3f(floor_size_x/2, 0, -floor_size_z/2); 

    glVertex3f(-floor_size_x/2, 0, -floor_size_z/2); 
    glVertex3f(-floor_size_x/2, wall_height, -floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, -floor_size_z/2); 
    glVertex3f(floor_size_x/2, 0, -floor_size_z/2);  

    //BAD WALL 
    glVertex3f(floor_size_x/2, 0, floor_size_z/2); 
    glVertex3f(floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(-floor_size_x/2, wall_height, floor_size_z/2); 
    glVertex3f(-floor_size_x/2, 0, floor_size_z/2); 

    glEnd(); 

我尝试了所有组合(计数器)顺时针顺序,但结果仍然相同。有任何想法吗?

+0

它真的是灰色的还是离灯光太远? – Angew

+0

您是否正确设置了顶点颜色?好的墙壁,地板和天花板都会在坏的一端褪色成黑色...... – kazemakase

+0

光线在立方体的中心。这灰色的墙壁在另一边是粉红色的。 – Linkas

回答

0

我相信你错误地识别你的墙。您创建的第一个(X = - floor_size_x/2),第三个(Z = - floor_size_z/2)和第四个(Z = floor_size_z/2)都是顺时针指定的,而第二个(X = floor_size_x/2)则是逆时针指定的。我猜这实际上是不正确的。

+0

我改变了第二道墙的顺序,没有发生任何事情。问题在于第4面墙,因为当我移除它时,会出现黑洞而不是灰色。 – Linkas

+0

@Linkas如果你已经尝试了顺时针和逆时针顺序的第四面墙,并且它是相同的,它真的很奇怪。当你改变它的颜色(只是第四面墙)时会发生什么? – Angew

+0

当我改变第四面墙的颜色时,会发生变化,但在另一面。这很奇怪,因为总是立方体的一边比较暗(当我移除所有的墙壁时,我可以在屋顶和地板上看到它),但是通过改变灯的位置。 – Linkas