OpenGL的显示三维立方体实例

以下是一个使用OpenGL实现三维图像渲染的简单示例代码:

#include <GL/glut.h>

void init()
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, 1.0, 0.1, 100.0);
    glMatrixMode(GL_MODELVIEW);
    glEnable(GL_DEPTH_TEST);
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    
    // 绘制一个立方体
    glBegin(GL_QUADS);
    
    // 正面
    glColor3f(1.0, 0.0, 0.0); // 设置红色
    glVertex3f(1.0, 1.0, -1.0);
    glVertex3f(-1.0, 1.0, -1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(1.0, -1.0, -1.0);
    
    // 后面
    glColor3f(0.0, 1.0, 0.0); // 设置绿色
    glVertex3f(1.0, 1.0, 1.0);
    glVertex3f(-1.0, 1.0, 1.0);
    glVertex3f(-1.0, -1.0, 1.0);
    glVertex3f(1.0, -1.0, 1.0);
    
    // 上面
    glColor3f(0.0, 0.0, 1.0); // 设置蓝色
    glVertex3f(1.0, 1.0, -1.0);
    glVertex3f(-1.0, 1.0, -1.0);
    glVertex3f(-1.0, 1.0, 1.0);
    glVertex3f(1.0, 1.0, 1.0);
    
    // 下面
    glColor3f(1.0, 0.0, 1.0); // 设置紫色
    glVertex3f(1.0, -1.0, -1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(-1.0, -1.0, 1.0);
    glVertex3f(1.0, -1.0, 1.0);
    
    // 左面
    glColor3f(1.0, 1.0, 0.0); // 设置黄色
    glVertex3f(-1.0, 1.0, -1.0);
    glVertex3f(-1.0, 1.0, 1.0);
    glVertex3f(-1.0, -1.0, 1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    
    // 右面
    glColor3f(0.0, 1.0, 1.0); // 设置青色
    glVertex3f(1.0, 1.0, -1.0);
    glVertex3f(1.0, 1.0, 1.0);
    glVertex3f(1.0, -1.0, 1.0);
    glVertex3f(1.0, -1.0, -1.0);
    
    glEnd();
    
    glFlush();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("3D Rendering");
    init();
    glutDisplayFunc(display);
    glutMainLoop();
    
    return 0;
}

上述代码使用OpenGL的函数绘制了一个简单的立方体,并在窗口中显示出来。其中,使用gluPerspective函数设置了透视投影,gluLookAt函数设置了观察视角,glBeginglEnd之间的代码绘制了立方体的六个面。每个面的颜色通过glColor3f函数设置。最后,通过glutMainLoop函数进入主循环,等待事件的处理。