一、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; ... };
原文链接: https://www.cnblogs.com/FascalXX/p/13157566.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/356732
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!