使用的软件是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;
}
运行结果是这样的:
按r键试试