概述
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显示函数是我们绘制图形的主要场所,上面的示例展示了绘制一段相互连接最终成环的线段过程。
上面的代码最终绘图效果:
最后
以上就是拼搏鱼为你收集整理的OpenGL绘制图形的基本流程和部分函数解析的全部内容,希望文章能够帮你解决OpenGL绘制图形的基本流程和部分函数解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复