运行结果是一片绿色是怎么回事?

使用的软件是vc++6.0
要求是:使用了一个包含8个顶点的立方体来绘制三维实体,每个面的颜色不同。使用glBegin和glEnd函数来绘制立方体的六个面,glColor3fv函数用来设置每个面的颜色。glEnable(GL_DEPTH_TEST)函数用于开启深度测试,确保绘制的三维实体可以正常显示。

代码:

#include <windows.h>
#include <gl/gl.h>
#include <GL/glut.h>

void draw3DShape()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    GLfloat vertices[][3] = { {-1.0f,-1.0f,-1.0f},{1.0f,-1.0f,-1.0f},
                              {1.0f,1.0f,-1.0f},{-1.0f,1.0f,-1.0f},
                              {-1.0f,-1.0f,1.0f},{1.0f,-1.0f,1.0f},
                              {1.0f,1.0f,1.0f},{-1.0f,1.0f,1.0f} };
    GLfloat colors[][3] = {{1.0,0.0,0.0},{1.0,1.0,0.0},
                            {0.0,1.0,0.0},{0.0,0.0,1.0},
                            {1.0,0.0,1.0},{1.0,1.0,1.0},
                            {0.0,1.0,1.0},{0.0,0.0,0.0}};

    glBegin(GL_QUADS);
    glColor3fv(colors[0]);
    glVertex3fv(vertices[0]);
    glVertex3fv(vertices[1]);
    glVertex3fv(vertices[2]);
    glVertex3fv(vertices[3]);

    glColor3fv(colors[1]);
    glVertex3fv(vertices[3]);
    glVertex3fv(vertices[2]);
    glVertex3fv(vertices[6]);
    glVertex3fv(vertices[7]);

    glColor3fv(colors[2]);
    glVertex3fv(vertices[4]);
    glVertex3fv(vertices[5]);
    glVertex3fv(vertices[6]);
    glVertex3fv(vertices[7]);

    glColor3fv(colors[3]);
    glVertex3fv(vertices[0]);
    glVertex3fv(vertices[4]);
    glVertex3fv(vertices[7]);
    glVertex3fv(vertices[3]);

    glColor3fv(colors[4]);
    glVertex3fv(vertices[1]);
    glVertex3fv(vertices[5]);
    glVertex3fv(vertices[6]);
    glVertex3fv(vertices[2]);

    glColor3fv(colors[5]);
    glVertex3fv(vertices[0]);
    glVertex3fv(vertices[1]);
    glVertex3fv(vertices[5]);
    glVertex3fv(vertices[4]);
    glEnd();

    glFlush();
}

void display()
{
    draw3DShape();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(400, 400);
    glutCreateWindow("图2:二维图形和三维实体");

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, -2.0f, 2.0f);
    glMatrixMode(GL_MODELVIEW);
    glEnable(GL_DEPTH_TEST);

    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

运行结果是这样的:

img

按r键试试