写点什么

OpenGL 入门一:基础知识及概念

作者:轻口味
  • 2023-04-29
    山西
  • 本文字数:1615 字

    阅读完需:约 5 分钟

OpenGL入门一:基础知识及概念

1、什么是 OpenGL

OpenGL:open graphic library,即开发图形库。它被定义为“图形硬件的一种软件接口”。实质上是 3D 图形和模型库,它具有高度可移植性,并且具有非常快的速度。可以创建优雅漂亮的 3D 图形,具有出色的视觉质量。并且速度远快于光线追踪仪或软件渲染引擎。

1.1 OpenGL 是编程语言吗?

OpenGL 不是一种像 C 和 C++这样的编程语言,它更像是一个 C 运行函数库,提供了一些预包装的功能。实际上,并不存在像 OpenGL 程序这类东西,而是我们开发人员所写的程序,恰好使用了 OpenGL 作为编程接口之一。举个例子,Windows 是一种编程语言吗?并不是,所谓的 Windows 程序员也只是基于 Windows 提供的 API 开发软件的程序员而已。

1.2 OpenGL 和谁打交道

一般来说,OpenGL 是由那些专门用于显示和操纵 3D 图形的计算机硬件所使用的(显卡、GPU,后面我们逐步介绍到)。纯软件的通用 OpenGL 实现也是可以的。比如我们 Android 手机系统的硬件吗和硬编码,操作系统完全可以不实现这部分硬件,然后使用软件实现一套;还有我们的路由器,我们也完全可以不专门买路由器,而是搞一台主机,然后插两块网卡,用软件实现路由表,路由分发。微软实现方案类似于这种纯软件实现,性能表现并不是很好。

1.3 OpenGL 应用场景

OpenGL 使用非常广泛,比如 CAD 工业制图软件、PS 图像设计软件、电影特效、游戏等。随着硬件加速以及高速的 PC 微处理器的普及,3D 图形现已成为消费者和商业程序的典型组件,不在局限于游戏和科学应用。

1.4 OpenGL 演进历史

OpenGL 前身是 SGI(Silicon Graphics,Inc)公司(SGI 是一家久负盛名的公司,在计算机和动画方面处于领先的地位)的 IRISGL,也是 SGI 对 IRIS GL 的移植性进行改进和提高的结果。这个新的 API 不仅具有 GL 的功能,而且是一个开放的标准。他的输入来自于其他图形厂商,并且更容易应用到其他平台和操作系统。从根本上讲,OpenGL 就是为 3D 几何图形处理量身定做的。


SGI 希望更多计算机能够运行 OpenGL 软件,因此诞生了 ARB(OpenGL Architecture Reiview Board),尽管 SGI 控制 OpenGL API,但 ARB 的创立者还包括 SGI、 DEC、 IBM、 Intel、 Microsoft。ARB 每隔 4 年召开一次会议,对规范进行维护和改善,并对 OpenGL 标准进行升级。2006 年 SGI 公司已经破产,把 OpenGL 标准控制从 ARB 移交给了新的工作组:The Khronos Group(www.khronos.org)。Khronos 是一个由它的成员提供资金的行业协会,专注于开放媒体标准的创建和维护。大多数 ARB 成员也成为了


Khronos 成员,因此变动没有他打破。现在我们搜索 OpenGL 相关的知识结果都是 Khronos 小组的,Khronos 升级了 OpenGL 以及姊妹 API-OpenGL ES,并且推出了用于替换 OpenGL 的 Vulkan。

2、 学 OpenGL 到底学什么?

OpenGL 设计硬件、软件、接口、标准等一系列的知识,所以我们要真正深入了解 OpenGL 应该从以下几个方面入手:


  1. OpenGL 标准接口;

  2. 数学方便知识(三角函数、矩阵等);

  3. 平台相关知识(EGL 等);

  4. 可编程管线中 Sharder 编程知识;

  5. 硬件相关知识和概念(比如 GPU 设计原理等)


系统通过我们系列文章可以对 OpenGL 有深入理解。

3、OpenGL 原理之变换



由上图,我们从(x,y)旋转到(x',y'),通过三角函数知识有:


x' = r * cos(a + b);   = r * (cos(a)*cos(b) - sin(a)*sin(b));   = x * cos(a) - y * sin(a);y' = r * sin(a + b);   = r * [sin(a)cos(b) + cos(a)*sin(b)];   = x * sin(a) + y * cos(a);
复制代码


近一步化简:


x' = x * cos(a) - y * sin(a);y' = x * sin(a) + y * cos(a);
复制代码


是不是我们的矩阵运算?

4、投影

我们一般有两种投影方式:


  • 透视投影

  • 正投影


我们日常生活就遵循透视投影规则:“远小近大”,《三体》里云天明将的故事中深水王子就是个“正投影”的怪物。体现在我们渲染中,如何做透视投影呢?



其实很像我们的小孔成像。有三个位置组成:人眼、远平面、近平面。最终两个平面形成的平截头体(棱台)中的物体被投射到二维平面的远平面中。

5、总结

本文介绍了 OpenGL 相关的知识:OpenGL 历史、OpenGL 发展、OpenGL 应用等,并且介绍了 OpenGL 需要掌握的知识,OpenGL 变换原理及投影成像原理。


发布于: 刚刚阅读数: 2
用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017-10-17 加入

Android、音视频、AI相关领域从业者。 欢迎加我微信wodekouwei拉您进InfoQ音视频沟通群 邮箱:qingkouwei@gmail.com

评论

发布
暂无评论
OpenGL入门一:基础知识及概念_opengl_轻口味_InfoQ写作社区