#include <GL/glut.h>
// 初始化OpenGL环境
void init() {
glClearColor(1.0, 1.0, 1.0, 0.0); // 设置白色背景
glColor3f(0.0, 0.0, 0.0); // 设置绘图颜色为黑色
glPointSize(4.0); // 设置点的大小
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0, 480.0); // 设置二维坐标系
}
// 绘制笑脸的函数
void drawSmiley() {
// 绘制头部(一个大圆)
glColor3f(1.0, 1.0, 0.0); // 设置颜色为黄色
glBegin(GL_POLYGON);
for (int i = 0; i < 360; i++) {
float angle = i * 3.14159 / 180;
glVertex2f(320 + 100 * cos(angle), 240 + 100 * sin(angle));
}
glEnd();
// 绘制眼睛(两个小圆)
glColor3f(0.0, 0.0, 0.0); // 设置颜色为黑色
glBegin(GL_POLYGON);
for (int i = 0; i < 360; i++) {
float angle = i * 3.14159 / 180;
glVertex2f(280 + 20 * cos(angle), 260 + 20 * sin(angle));
}
glEnd();
glBegin(GL_POLYGON);
for (int i = 0; i < 360; i++) {
float angle = i * 3.14159 / 180;
glVertex2f(360 + 20 * cos(angle), 260 + 20 * sin(angle));
}
glEnd();
// 绘制嘴巴(一个弯曲的线段)
glColor3f(0.0, 0.0, 0.0); // 设置颜色为黑色
glBegin(GL_LINE_STRIP);
for (int x = 300; x <= 340; x += 10) {
glVertex2f(x, 220);
}
glVertex2f(350, 240);
glVertex2f(360, 240);
for (int x = 370; x <= 410; x += 10) {
glVertex2f(x, 220);
}
glEnd();
}
// 绘图函数
void display() {
glClear(GL_COLOR_BUFFER_BIT); // 清除屏幕
drawSmiley(); // 调用绘制笑脸的函数
glFlush(); // 执行OpenGL命令
}
// 主函数
int main(int argc, char** argv) {
glutInit(&argc, argv); // 初始化GLUT库
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式
glutInitWindowSize(640, 480); // 设置窗口大小
glutInitWindowPosition(100, 100); // 设置窗口位置
glutCreateWindow("复杂图案 - 笑脸"); // 创建窗口
init(); // 初始化OpenGL环境
glutDisplayFunc(display); // 注册绘图函数
glutMainLoop(); // 进入GLUT事件处理循环
return 0;
}