AI正在绞尽脑汁想思路ING···
BiのAI摘要
HunYuan-Lite

代码展示

我们先从基本的OpenGL程序开始吧,这是一个简单的OpenGL程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<GL/glut.h>
using namespace std;

// 回调函数
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);
glColor4f(0.0, 1.0, 0.0, 0.0);
glRectf(50.0, 50.0, 400.0, 400.0);

// 划线
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);
glBegin(GL_POINTS);
glVertex2f(15.0, 15.0);
glEnd();

// 画三角形
glBegin(GL_TRIANGLES);
glColor3f(0.0, 0.0, 1.0);
glVertex2i(200, 300);
glVertex2i(100, 100);
glVertex2i(300, 100);
glEnd();


glFlush();

}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(500, 500);
glutCreateWindow("");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}

这是运行结果图:
第一个OpenGL程序

代码解释

这段代码展示了经典的 OpenGL (GLUT) 固定渲染管线基本操作。为了方便理解,我将这些函数按照 初始化与窗口管理状态设置坐标变换 以及 图形绘制 四个类别进行了整理。

1. 窗口管理与初始化 (GLUT 库)

这类函数主要用于配置窗口系统和处理程序的运行流程。

函数名称 功能描述 核心参数说明
glutInit 初始化 GLUT 库 接收 main 函数的命令行参数
glutInitDisplayMode 设置显示模式 GLUT_RGB (使用颜色模式), GLUT_SINGLE (单缓冲区)
glutInitWindowPosition 设置窗口在屏幕上的初始位置 窗口左上角坐标 $(x, y)$
glutInitWindowSize 设置窗口的宽度和高度 像素值 (Width, Height)
glutCreateWindow 创建窗口 字符串参数作为窗口标题
glutDisplayFunc 注册显示回调函数 传入负责绘图的函数指针
glutMainLoop 进入 GLUT 事件处理循环 让程序持续运行,等待重绘或交互

2. 状态设置与缓冲区操作

这些函数用于配置 OpenGL 的全局状态(如颜色、点大小)或清理画布。

函数名称 功能描述 核心参数说明
glClearColor 设置清除颜色(背景色) RGBA 值 (0.0~1.0),此处设为黑色
glClear 清除指定的缓冲区 GL_COLOR_BUFFER_BIT 表示清除颜色缓存
glColor4f 设置当前的绘制颜色 (带透明度) RGBA 分量
glColor3f 设置当前的绘制颜色 (不带透明度) RGB 分量
glPointSize 设置点的像素大小 浮点数,数值越大点越粗
glFlush 强制刷新缓冲区 确保绘图命令立即执行并输出到显示设备

3. 矩阵与坐标变换

用于定义物体是如何投影到屏幕上的。

函数名称 功能描述 核心参数说明
glMatrixMode 设置当前矩阵模式 GL_PROJECTION 切换到投影矩阵堆栈
gluOrtho2D 定义二维正交投影裁剪区域 定义视野的左、右、下、上边界范围

4. 几何图形绘制

OpenGL 的核心绘图逻辑,通过指定顶点来构建形状。

函数名称 功能描述 核心参数说明
glRectf 绘制一个实心矩形 传入左下角坐标和右上角坐标 $(x1, y1, x2, y2)$
glBegin 标记图元绘制的开始 GL_LINES (线), GL_POINTS (点), GL_TRIANGLES (三角形)
glVertex2f 指定一个二维顶点 (浮点型) 坐标 $(x, y)$
glVertex2i 指定一个二维顶点 (整型) 坐标 $(x, y)$
glEnd 标记图元绘制的结束 必须与 glBegin 成对出现