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变换原理及投影成像原理。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻口味

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值