【OpenGL学习】前置知识
一、OpenGL
- OpenGL通常被认为是一个图形API,包含了一系列可以操作图形、图像的函数。但其实是一个标准
二、核心模式与立即渲染模式
- 早期的OpenGL使用立即渲染模式(固定渲染管线),这个模式下绘制图形很方便。立即渲染模式确实容易使用和理解,但是效率太低。
- 当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。现代函数的优势是更高的灵活性和效率,然而也更难于学习。立即渲染模式从OpenGL实际运作中抽象掉了很多细节,因此它在易于学习的同时,也很难让人去把握OpenGL具体是如何运作的。
三、扩展
-
OpenGL的一大特性就是对扩展(Extension)的支持,如果一个程序在支持这个扩展的显卡上运行,开发者可以使用这个扩展提供的一些更先进更有效的图形功能。使用这些新的渲染特性了,只需要简单地检查一下显卡是否支持此扩展。
使用拓展的代码样子和下面差不多:
if(GL_ARB_extension_name) { // 使用硬件支持的全新的现代特性 } else { // 不支持此扩展: 用旧的方式去做 }
四、状态机
-
OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。
OpenGL的状态通常被称为OpenGL上下文(Context)。
我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
-
状态设置函数(State-changing Function)将会改变上下文。
-
状态使用函数(State-using Function)会根据当前OpenGL的状态执行一些操作。
五、对象
-
在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。
当我们使用一个对象时,通常看起来像如下一样(把OpenGL上下文看作一个大的结构体):
// OpenGL的状态 struct OpenGL_Context { ... object* object_Window_Target; ... };

浙公网安备 33010602011771号