C++ opengl库函数绘制一个立方体代码
时间: 2023-10-27 08:05:59 浏览: 102
下面是一个使用 C++ 和 OpenGL 库函数绘制立方体的示例代码:
```cpp
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0);
// 绘制立方体
glBegin(GL_QUADS);
glColor3f(1, 0, 0); // 红色
glVertex3f(-1, 1, 1);
glVertex3f(1, 1, 1);
glVertex3f(1, -1, 1);
glVertex3f(-1, -1, 1);
glColor3f(0, 1, 0); // 绿色
glVertex3f(-1, 1, -1);
glVertex3f(-1, -1, -1);
glVertex3f(1, -1, -1);
glVertex3f(1, 1, -1);
glColor3f(0, 0, 1); // 蓝色
glVertex3f(-1, 1, 1);
glVertex3f(-1, -1, 1);
glVertex3f(-1, -1, -1);
glVertex3f(-1, 1, -1);
glColor3f(1, 1, 0); // 黄色
glVertex3f(1, 1, 1);
glVertex3f(1, 1, -1);
glVertex3f(1, -1, -1);
glVertex3f(1, -1, 1);
glColor3f(0, 1, 1); // 青色
glVertex3f(-1, 1, 1);
glVertex3f(-1, 1, -1);
glVertex3f(1, 1, -1);
glVertex3f(1, 1, 1);
glColor3f(1, 0, 1); // 品红色
glVertex3f(-1, -1, 1);
glVertex3f(1, -1, 1);
glVertex3f(1, -1, -1);
glVertex3f(-1, -1, -1);
glEnd();
glutSwapBuffers(); // 双缓冲交换
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("OpenGL Cube");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
这个程序使用了 OpenGL 的立方体绘制函数 `glBegin(GL_QUADS)` 和 `glEnd()`,并通过 `glVertex3f()` 函数来定义立方体的顶点坐标。在 `display()` 函数中,我们使用了 `gluLookAt()` 函数来设置相机位置和朝向,并通过 `glEnable(GL_DEPTH_TEST)` 开启深度测试来保证立方体的正面被正确渲染。最后,我们通过 `glutSwapBuffers()` 函数实现了双缓冲交换,避免了渲染过程中的闪烁现象。
阅读全文