本博客的内容出自于https://learnopengl-cn.github.io/
仅根据自己的理解记录下对自己很有帮助的地方
OpenGL是什么?
OpenGL可以认为是一个API,但具体来说OpenGL值规定了函数如何执行和输出值,但没有定义如何实现,具体实现细节是由显卡的生产商完成的。所以有时候OpenGL的Bug可以通过升级驱动来解决。
OpenGL早期的使用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。但是OpenGL的大多数功能都被库隐藏起来,不够灵活。因此从OpenGL3.2开始,鼓励使用OpenGL核心模式
(Core-profile),他更加灵活,但是用也更复杂,要求使用者理解OpenGL和图形编程。
关于编程你需要了解的重要概念
- OpenGL本质是一个状态机,一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
- OpenGL库用C语言写的,由于C的一些语言结构不易被翻译到其它的高级语言,因此OpenGL开发的时候引入了一些抽象层。**“对象(Object)”**就是其中一个。在OpenGL中对象可以认为是一个C风格的结构体(Struct)。
必须的库函数
- 在利用OpenGL绘图之前,首先需要创建一个OpenGL上下文(Context)和一个用于显示的窗口,这些操作在不同的操作系统中是不同的,OpenGL把这些操作抽象了出去,GLFW库就提供了这些功能,它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。除此之外还有GLUT,SDT, SFML等。
编译安装步骤可以参考
https://learnopengl-cn.github.io/01 Getting started/02 Creating a window/ - 前面已经说过OpenGL只提供了函数的标准或者说规范,而并未提供实现,这些是由驱动开发商完成的。那么在使用任何一个函数前首先需要找到函数实现的位置,然后才能使用,为了简化这个过程,可以使用GLAD来帮你进行这些工作。