OpenGL-基础程序

发布于 2026/04/12 技术 总字数:1.3k 阅读时长:4 分钟
文章导读 摘要由 Qwen 生成

这篇文章详细介绍了OpenGL的基础程序,包括代码展示和代码解释两部分。代码展示部分呈现了一个简单的OpenGL程序,涵盖了初始化与窗口管理、状态设置与缓冲区操作、矩阵与坐标变换以及几何图形绘制等关键步骤。代码解释则将这些步骤按照功能类别进行了归纳,帮助读者更好地理解OpenGL的渲染流程。通过这个示例,读者可以初步掌握OpenGL的基本操作和概念。

ARTICLE SERIES

OpenGL 学习笔记

第 2 / 4 篇
  1. 01 配置OpenGL环境
  2. 02 OpenGL-基础程序
  3. 03 OpenGL-直线的扫描转换
  4. 04 OpenGL- Cohen-Sutherland 编码裁剪算法

代码展示

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

#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设置窗口在屏幕上的初始位置窗口左上角坐标
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绘制一个实心矩形传入左下角坐标和右上角坐标
glBegin标记图元绘制的开始GL_LINES (线), GL_POINTS (点), GL_TRIANGLES (三角形)
glVertex2f指定一个二维顶点 (浮点型)坐标
glVertex2i指定一个二维顶点 (整型)坐标
glEnd标记图元绘制的结束必须与 glBegin 成对出现

OpenGL-基础程序

/posts/437a5198/
作者
biss
发布于
许可协议
CC BY-NC-SA 4.0
OpenGL
订阅 打赏

Comments

OpenGL-基础程序

Ctrl + 右键:浏览器原生菜单