基础知识:
- 注:笔记全部摘抄 learnopengl网站
OpenGL特性:
-
绘图模式:
-
立即渲染模式 immediate mode --固定渲染管线
- 优点:容易使用、学习和理解(OpenGL的大多数功能被库隐藏起来,抽象掉很多细节)
- 缺点:效率低,并且难以让人把握OpenGL具体是如何运作的。
-
核心模式 -- Core- profile
- 优点:更多的灵活度,更高的效率,可以深入理解图形编程;
- 缺点:难度更大,现代函数要求使用者真正理解OpenGL和图像编程。
-
-
扩展 OpenGL对扩展(Extension)的支持,当一个显卡公司提出一个新特性或者渲染上的大优化,通常会以
扩展的方式
在驱动
中实现。如果一个程序在支持这个扩展的显卡上运行,开发者可以使用这个扩展提供的一些更先进更有效的图形功能。通过这种方式,开发者不必等待一个新的OpenGL规范面世,就可以使用这些新的渲染特性了,只需要简单地检查一下显卡是否支持此扩展
。 -
状态机 OpenGL自身是一个巨大的
状态机(State Machine)
,OpenGL的状态
通常被称为OpenGL上下文(Context)
,改OpenGL状态途径有:设置选项,操作缓冲
。然后使用当前OpenGL上下文来渲染。 -
对象 OpenGL库是用
C语言
写的,同时也支持多种语言的派生,但其内核仍是一个C库。在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。
其他
- 双缓冲 Double Buffer
- 应用程序使用单缓冲绘图时,可能会存在图像闪烁的问题。
- 是因为在生成的图像不是一下子被绘制出来的,而是按照从左到右,由上到下逐地绘制而成。最终图像不是在瞬间显示给用户的,不然会出现不真实的感觉。
- 为了规避这些问题,我们应用
双缓冲
渲染窗口应用程序。前缓冲保存着最终输出的图像,它会在屏幕上显示;而所有的的渲染指令都会在后缓冲上绘制。当所有的渲染指令执行完毕后,我们交换(Swap)前缓冲和后缓冲,这样图像就立即呈显出来,之前提到的不真实感就消除了。
- 显卡驱动
- 由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议偶尔更新一下显卡驱动。