Files
Computer-Graphics-Lab/lab1/1.cpp
T
2026-05-09 22:09:54 +08:00

52 lines
2.6 KiB
C++

#include<GL/glut.h> // 引入 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;
}