OpenGL绘制图形的基本流程和部分函数解析

OpenGL绘制图形的基本流程和部分函数解析


首先熟悉OpenGL的代码基本流程和主要绘图函数如下面的代码所示,其中注释标注了部分函数的解析引用博客出处:

#include<GL/glut.h>

void initial()
{
	// 设置绘图背景颜色
	glClearColor(1.0, 1.0, 1.0, 1.0);

	// 指定当前要操作的矩阵,设置为操作投影矩阵
	// 有关MatrixMode有三种参数设置:https://blog.csdn.net/jiangdf/article/details/8460012
	glMatrixMode(GL_PROJECTION);

	// 指定当前画面的坐标,参数分别为左下角的x,右上角的x,左下角的y,右上角的y
	// 不调用则默认的参数组合为(-1, 1, -1, 1)
	gluOrtho2D(-1.1, 1.1, -1.1, 1.1);
}

void display()
{
	// 清除当前可写的颜色缓冲
	// 关于glClear():https://blog.csdn.net/siyue0211/article/details/74783966
	glClear(GL_COLOR_BUFFER_BIT);

	// 设置当前绘制所用的颜色(R, G, B)
	glColor3f(0.0, 0.0, 0.0);
	// 设置点线关系为:将绘制的点一次连线最终成环。glBegain()与glEnd()成对出现。
	// 有关glBegin()的参数:https://blog.csdn.net/aa941096979/article/details/50843596
	glBegin(GL_LINE_LOOP);
	// 在画面上描点。有关glVertex**():https://blog.csdn.net/qq844352155/article/details/28465919
	glVertex2d(0, 0);
	glVertex2d(1, 1);
	glVertex2d(0, 1);
	glVertex2d(1, 0);
	glEnd();

	// 清空缓冲区,将缓冲区的图像交给硬件执行,可用glFlush()或glFinish()
	// 有关glFlush()和glFinish():https://blog.csdn.net/xb554790401/article/details/38704493
	glFlush();
}

int main(int argc, char* argv[])
{
	// 初始化GLUT环境
	glutInit(&argc, argv);

	// 初始化display模式为:RGB颜色模式,单缓冲
	// 有关单缓冲和双缓冲:https://blog.51cto.com/fengyuzaitu/1881257
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

	// 设置窗口的位置、大小、名称
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(600, 600);
	glutCreateWindow("GL Demo");

	// 设置display函数,初始化函数,开始主循环
	glutDisplayFunc(&display);
	initial();
	glutMainLoop();

	return 0;
}

上面的代码和注释解释了OpenGL基本绘图的代码架构和过程,从main函数读起,初始GLUT环境,设置颜色模式和缓冲模式,设置窗口弹出的位置大小和名称,随后设置好显示函数入口,调用初始化函数,进入glut主循环,系统就会开始为我们绘制图像。

在调用的初始化函数中我们常常对背景颜色、所操作的矩阵和显示坐标范围做初始化设置。display显示函数是我们绘制图形的主要场所,上面的示例展示了绘制一段相互连接最终成环的线段过程。

上面的代码最终绘图效果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值