52 lines
2.6 KiB
C++
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;
|
|
} |