#include // 引入 GLUT/OpenGL 头文件,提供窗口和绘图函数。 using namespace std; // 使用标准命名空间,方便后续直接使用标准库名称。 // 回调函数:GLUT 在需要重绘窗口时会调用它。 void myDisplay() // 定义绘制窗口内容的函数。 { // 清除缓冲区前先设置清屏颜色。 glClearColor(0.0, 0.0, 0.0, 0.0); // 设置背景清除颜色为黑色。 glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲区,刷新画布背景。 // 设置二维正交投影模式。 glMatrixMode(GL_PROJECTION); // 切换到投影矩阵模式。 gluOrtho2D(0.0, 500.0, 0.0, 500.0); // 设置二维坐标范围为 x:[0,500], y:[0,500]。 glColor4f(0.0, 1.0, 0.0, 0.0); // 设置当前绘图颜色为绿色。 glRectf(50.0, 50.0, 400.0, 400.0); // 绘制一个左下角为(50,50)、右上角为(400,400)的矩形。 // 绘制线段。 glColor3f(1.0, 1.0, 0.0); // 设置当前绘图颜色为黄色。 glBegin(GL_LINES); // 开始按线段方式提交顶点。 glVertex2f(50.0, 50.0); // 指定第一条线段的起点。 glVertex2f(400.0, 400.0); // 指定第一条线段的终点。 glVertex2f(400.0, 50.0); // 指定第二条线段的起点。 glVertex2f(50.0, 400.0); // 指定第二条线段的终点。 glEnd(); // 结束线段顶点提交。 // 绘制点。 glColor3f(1.0, 0.0, 0.0); // 设置当前绘图颜色为红色。 glPointSize(20.0); // 设置点的显示大小为 20 像素。 glBegin(GL_POINTS); // 开始按点方式提交顶点。 glVertex2f(15.0, 15.0); // 在坐标(15,15)处绘制一个点。 glEnd(); // 结束点顶点提交。 // 绘制三角形。 glBegin(GL_TRIANGLES); // 开始按三角形方式提交顶点。 glColor3f(0.0, 0.0, 1.0); // 设置当前绘图颜色为蓝色。 glVertex2i(200, 300); // 指定三角形第一个顶点。 glVertex2i(100, 100); // 指定三角形第二个顶点。 glVertex2i(300, 100); // 指定三角形第三个顶点。 glEnd(); // 结束三角形顶点提交。 glFlush(); // 强制执行所有尚未执行的 OpenGL 绘图命令。 } int main(int argc, char* argv[]) { glutInit(&argc, argv); // 初始化 GLUT 库。 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); // 设置显示模式为 RGB 颜色和单缓冲。 glutInitWindowPosition(100, 100); // 设置窗口左上角初始位置。 glutInitWindowSize(500, 500); // 设置窗口初始大小为 500x500。 glutCreateWindow("实验1_03毕爽爽的第一个OpenGL程序"); // 创建标题为指定字符串的窗口。 glutDisplayFunc(&myDisplay); // 注册显示回调函数。 glutMainLoop(); // 进入 GLUT 事件循环。 return 0; }