freeCode@IT

OpenGL初识

2019-05-30  本文已影响107人  silasjs

OpenGL初识

图形API简介

图形API的功能:实现图形的底层渲染

OpenGL名词注解

程序从 CPU 的内存复制数据到 OpenGL ES 的缓存。在 GPU 取得一个缓存的所有权以后,运行在 CPU 中的程序理想情况下将不 再接触这个缓存。通过控制独占的缓存,GPU 就能够尽可能以最有效的方式读写内存。 图形处理器把它处理大量数据的能力异步同时地应用到缓存上,这意味着在 GPU 使用 缓存中的数据工作的同时,运行在 CPU 中的程序可以继续执行。

OpenGL坐标系解析

在一个简单的平面计算机屏幕上绘制点和线时,我们根据行和列指定位置。

在OpenGL或几乎所有的3D PAI中创建一个用于绘制的窗口时,必须指定希望使用的坐标系统以及指定的坐标如何映射到实际的屏幕像素。

2D笛卡尔坐标系

在二维绘图中,最常用的是笛卡尔坐标系统。笛卡尔坐标由一个x坐标和y坐标构成。x坐标测量水平方向的位置,y坐标测量垂直方向的位置。x轴和y轴垂直相交定义了一个平面。

2D笛卡尔坐标系

3D笛卡尔坐标系

2D笛卡尔坐标新增一个表示深度分量的z轴就是3D笛卡尔坐标。

3D笛卡尔坐标系

视口

视口就是窗口内部用于绘制裁剪区域的客户区域。视口简单的把裁剪区域映射到窗口中的一个区域。通常,视口被定义为整个窗口,但这并非严格必须的。

视口被定义为整个窗口

有时我们只想在窗口的一部分部分进行绘图。我们可以使用视口来缩小和放大窗口中的图像,也可以通过把视口设置大于窗口的用户区域,从而只显示裁剪区域的一部分。

视口被定义为窗口的一部分

投影方式

首先需要理解投影:把3D几何图形的坐标数据投影在一个2D的平面。就像用笔在玻璃上描摹出玻璃后面的物体的外形。而平面上的投影就是视景体。通过指定投影,我们可以指定在窗口中显示的视景体。

3D图像投影到2D平面

正投影

正投影又叫平行投影。使用这种投影时,需要指定一个正方形或长方形的视景体。视景体之外的任何物体都不会被绘制。而且,所有实际大小相同的物体在屏幕上都具有相同的大小,不管它们是远是近。

正投影

我们还可以在正投影中通过指定远、近、左、右、顶和底裁剪平面来指定视景体。在这个视景体中出现的物体和图形将被投影( 考虑它们的方向)到一个在屏幕上出现的2D图像。

透视投影

在透视投影中,远处的物体看上去比近处的物体更小一些。它的视景体看上去有点像一个顶部被削平的金字塔。剩下来的这个形状称为平截头体( Frustum)。靠近视景体前面的物体看上去比较接近它们的原始大小。但是,当靠近视景体后部的物体被投影到视景体的前部时,它们看上去就显得比较小。在模拟和3D动画中,这种投影能够获得最大程度的逼真感。

透视投影
上一篇下一篇

猜你喜欢

热点阅读