当前位置:首页 > 经验 >

opengl使用手册(opengl学习教程)

来源:原点资讯(www.yd166.com)时间:2022-10-25 10:40:20作者:YD166手机阅读>>

作者 | 天元浪子

来源 | CSDN博文精选

【编者按】OpenGL(开放式图形库),用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口,C、C 、Python、Java等语言都能支持 OpenGL。本文作者以 Python 语法为例,用两万字详解 OpenGL 的理论知识、用法与实际操作,干货满满,一起来看看吧。

预备知识

OpenGL 是 Open Graphics Library 的简写,意为“开放式图形库”,是用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL 不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C / C / Python / Java 都可以很好支持 OpengGL,我当然习惯性选择 Python 语言。

如果读者是 Python 程序员,并且了解 NumPy,接下来的阅读应该不会有任何障碍;否则,我建议先花半小时学习一下 Python 语言。关于 Python ,可以参考我的另一篇博文《数学建模三剑客MSN》。事实上,我觉得 Python 语言近乎于自然语言,只要读者是程序员,即便不熟悉 Python ,读起来也不会有多大问题。

另外,读者也不必担心数学问题。使用 OpenGL 不需要具备多么高深的数学水平,只要能辅导初中学生的数学作业,就足够用了。

一、坐标系

在 OpenGL 的世界里,有各式各样的坐标系。随着对 OpenGL 概念的理解,我们至少会接触到六种坐标系,而初始只需要了解其中的三个就足够用了(第一次阅读这段话的时候,只需要了解世界坐标系就可以了)。

  • 世界坐标系(World Coordinates)

世界坐标系是右手坐标系,以屏幕中心为原点(0, 0, 0),且是始终不变的。

opengl使用手册,opengl学习教程(1)

  • 视点坐标系(Eye or Camera Coordinates)

视点坐标是以视点为原点,以视线的方向为Z 轴正方向的坐标系。OpenGL 管道会将世界坐标先变换到视点坐标,然后进行裁剪,只有在视线范围(视景体)之内的场景才会进入下一阶段的计算。

  • 屏幕坐标系(Window or Screen Coordinates)

OpenGL 的重要功能之一就是将三维的世界坐标经过变换、投影等计算,最终算出它在显示设备上对应的位置,这个位置就称为设备坐标。在屏幕、打印机等设备上的坐标是二维坐标。值得一提的是,OpenGL 可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。

二、投影

三维场景中的物体最终都会显示在类似屏幕这样的二维观察平面上。将三维物体变为二维图形的变换成为投影变换。最常用的投影有两种:平行投影和透视投影。如下图所示,F 是投影面,p1p2 为三维空间中的一条直线,p’1 和 p’2 分别是 p1 和 p2 在 F 上的投影,虚线表示投影线,O 为投影中心。

opengl使用手册,opengl学习教程(2)

  • 平行投影

这里所说的平行投影,特指正交平行投影——投影线垂直于投影面。将一个三维点 (x,y,z) 正交平行投影到 xoy 平面上,则投影点坐标为 (x,y,0)。由于平行投影丢弃了深度信息,所以无法产生真实感,但可以保持物体之间相对大小关系不变。

  • 透视投影

透视投影将投影面置于观察点和投影对象之间,距离观察者越远的物体,投影尺寸越小,投影效果具有真实感,常用于游戏和仿真领域。

三、视景体

无论是平行投影还是透视投影,投影成像都是在投影面上——我们可以把投影面理解成显示屏幕。世界坐标系描述的三维空间是无限的,投影平面是无限的,但(我们能够看到的)屏幕面积总是有限的,因此在投影变换时,通常只处理能够显示在屏幕上的那一部分三维空间。从无限三维空间中裁切出来的可以显示在屏幕上的部分三维空间,我们称之为视景体。视景体有六个面,分别是左右上下和前后面。

对于平行投影而言,视景体是一个矩形平行六面体;对于透视投影来说,视景体是一个棱台。理解这一点并不难:因为越远处的物体在投影窗口的透视投影越小,也就意味着填满投影窗口需要更大的体量,视景体自然就变成了棱台。

opengl使用手册,opengl学习教程(3)

四、视口

对于平行投影而言,视口就是由视景体的左右上下四个面围成的矩形,对于透视投影来说,视口就是视景体的前截面在投影窗口上的透视投影。

视口是 OpenGL 中比较重要的概念,现阶段可以简单理解成屏幕(或其他输出设备)。事实上,视口和屏幕是相关但又不相同的,屏幕有固定的宽高比,而视口大小可以由用户自行定义。通常,为了适应不同宽高比的屏幕,在设置视口时,会根据屏幕宽高比调整视景体(增加宽度或高度)。

五、视点

现实生活中,人们看到的三维空间物体的样子取决于观察者站在什么角度去看。这里面包含着三个概念:

  • 观察者的位置:眼睛在哪儿?

  • 观察者的姿势:站立还是倒立?左侧卧还是右侧卧?

  • 观察对象:眼睛盯着哪里?

对应在 OpenGL 中,也有同样的概念,即视点的位置、瞄准方向的参考点,以及(向上的)方向。

六、OpenGL 变换

下图是三维图形的显示流程。世界坐标系中的三维物体经过视点变换和一系列几何变换(平移、旋转、缩放)之后,坐标系变换为视点坐标系;经过投影和裁剪之后,坐标系变换为归一化设备坐标系;最后经过视口变换显示在屏幕上,相应地,坐标系变成了窗口坐标系。

opengl使用手册,opengl学习教程(4)

首页 123下一页

栏目热文

2022年达飞兑付能完成吗(达飞云贷不还5年了)

2022年达飞兑付能完成吗(达飞云贷不还5年了)

拿着结清证明都没用,因为助贷平台和资金方没有协商一致,导致借款人被再次催收、上逾期名单,甚至被起诉。这样的事情就发生在达...

2022-10-25 10:30:25查看全文 >>

达飞金融被法律承认吗(达飞云贷还用还吗)

达飞金融被法律承认吗(达飞云贷还用还吗)

达飞云贷此前就问题颇多,如今一份立案通知在多个群中传播开来,警方似乎已经开始对达飞云贷展开立案调查。撰文 | 昂格出品 ...

2022-10-25 10:19:43查看全文 >>

人死了为什么要盖住脸(人死后为什么要穿寿衣)

人死了为什么要盖住脸(人死后为什么要穿寿衣)

大家都知道,我国有很多约定俗成的习俗。有些习俗被视为封建陋习,有的则不然,比如丧葬就有很多习俗。中国丧葬死于始于原始社会...

2022-10-25 10:05:19查看全文 >>

一路走好天堂安息语句(一路走好图片)

一路走好天堂安息语句(一路走好图片)

生者幸福是对逝去亲人最好的安慰,为了老人家的希望你一定要努力让自己快乐起来!今天小编带来愿逝者安息的唯美句子,一起来看看...

2022-10-25 09:52:42查看全文 >>

opengl入门学习(opengl学习可以掌握哪些技术)

opengl入门学习(opengl学习可以掌握哪些技术)

作者:灵魂奏响曲博客:https://www.jianshu.com/p/21f4d6ee6863这是在Android中...

2022-10-25 10:22:35查看全文 >>

opengl使用说明书(opengl学习教程)

opengl使用说明书(opengl学习教程)

OpenGL是业界使用最广泛的2D和3D图形API,将成千上万的应用程序带到各种计算机平台上。它与窗口系统和操作系统无关...

2022-10-25 10:22:29查看全文 >>

opengl工具(opengl学习网站)

opengl工具(opengl学习网站)

GL StudioGL Studio是美国DiSTI公司的旗舰产品,它是一个独立平台的快速原型工具,用来创建实时的、照片...

2022-10-25 10:26:32查看全文 >>

opengl图解(opengl三个基本操作)

opengl图解(opengl三个基本操作)

在喜欢玩游戏的程序员眼里,OpenGL的魅力是极大的。这个用于渲染2D、3D矢量图形的API,在众多应用程序编程接口中,...

2022-10-25 10:06:33查看全文 >>

opengl自学看什么(opengl适合什么人学)

opengl自学看什么(opengl适合什么人学)

图形编程是计算机科学中最具挑战性的主题之一,并因此而闻名。当今,图形编程是基于着色器的——也就是说,有些程序是用诸如C ...

2022-10-25 10:27:15查看全文 >>

文档排行