Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';不能正确定义一个四元组_C++_Opengl_3d - Fatal编程技术网

C++ Can';不能正确定义一个四元组

C++ Can';不能正确定义一个四元组,c++,opengl,3d,C++,Opengl,3d,我想要一个长方形的立方体。一面墙的正面不对,所以我看不到粉红色。这是立方体的好一面: 立方体背面为灰色墙面: 代码如下: 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_siz

我想要一个长方形的立方体。一面墙的正面不对,所以我看不到粉红色。这是立方体的好一面:

立方体背面为灰色墙面:

代码如下:

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();

我尝试了所有的组合(逆时针)顺序,但结果仍然是一样的。有什么想法吗

我相信你没有正确识别墙壁。您创建的第一个(
X=-floor\u size\u X/2
),第三个(
Z=-floor\u size\u Z/2
)和第四个(
Z=floor\u size\u Z/2
)都是顺时针指定的,而第二个(
X=floor\u size\u X/2
)是逆时针指定的。我猜这实际上是不正确的。

它是真的是灰色的还是离灯光太远了?顶点颜色设置正确了吗?好的墙壁、地板和天花板在坏的一端都会褪色为黑色……光线位于立方体的中心。这面灰色的墙的另一面是粉红色的。你能描述一下图像在你的坐标系中是如何定位的吗?面对坏墙的那个,哪里是+X,哪里是+Z?我用坐标系画图。我改变了第二面墙的顺序,然后。。。什么也没发生。问题在于第四面墙,因为当我移除它时,它是黑洞而不是灰色的。@link如果你试过顺时针和逆时针方向的第四面墙,它是一样的,它真的很奇怪。当你改变它的颜色(仅仅是第四面墙)时,会发生什么事情吗?当我改变第四面墙的颜色时,会发生变化,但在另一面。这很奇怪,因为立方体的一面总是比较暗(当我移开所有的墙时,我可以在屋顶和地板上看到它),尽管改变了灯光的位置。