前言
对于C++和OpenGL的学习是同时进行的,因为我觉得相较于简单的编程练习,OpenGL本身就是对于C++的非常好的实践,能够有助于我们进一步理解C++的语言特性。作为OpenGL系列的第一篇文章,本文将会帮助大家建立起对于OpenGL的初步印象。
什么是OpenGL
在我们学习一个东西之前我们第一个疑问就是它是什么?那么什么是OpenGL呢?一些人认为OpenGL是一系列跨平台的操作图像的API,其实这个定义并不准确,准确来说OpenGL是由www.khronos.org 提出并维护的与平台无关的操作图像的规范,OpenGL规范严格规定了每个函数的结果和输出以及运行过程,但是却不包含具体的实现细节,我们熟知的OpenGL库则是基于OpenGL规范的实现,其中包含了大量的操作图像的API。OpenGL库一般是由显卡制造商开发并维护的,例如Apple平台的OpenGL库就是他们自己开发维护的。
基本概念
核心模式vs立即渲染模式
在早期OpenGL采用的是立即渲染模式(Immediate mode,也就是固定管线),在这种模式下能够非常容易的使用提供的方法渲染图像,很多实现的细节隐藏在是OpenGL库的内部,开发者无法控制OpenGL的计算过程。这种模式易于理解和使用但是灵活性差。为了提供更加灵活和有效的开发模式,OpenGL规范提供了核心模式,这是OpenGL规范的一个分水岭,在核心模式中,OpenGL更加关注一些现代化的实践,并移除了所有废弃的功能,如果使用废弃的函数将会引发错误并停止绘制。这种现代化的实践需要开发者深入了解OpenGL和图像编程,学习曲线比较陡峭,但是更加灵活和高效,由此我们的学习也是基于核心模式,难但是值得去花时间。
扩展
OpenGL一大优点是支持扩展,如果一个显卡公司提出了一个新技术或者极大地优化渲染,通常会通过在驱动中添加扩展的方式实现,如果硬件支持这个扩展,开发者就可以使用这个扩展提供的能力,如果这个扩展真的十分

本文作为OpenGL系列的第一篇,介绍了OpenGL的基本概念,包括核心模式与立即渲染模式的区别,扩展机制,以及状态机和对象的运用。OpenGL是一个由Khronos Group维护的跨平台图形API规范,其库由显卡制造商实现。学习OpenGL时,我们将侧重于现代的核心模式,尽管难度较大,但更灵活高效。此外,OpenGL支持扩展,允许开发者利用硬件新功能,并通过状态机管理和对象抽象来操作图形上下文。
最低0.47元/天 解锁文章
770

被折叠的 条评论
为什么被折叠?



