OpenGL 笔记

OpenGL笔记二:OpenGL 渲染流程及投影

2019-05-17  本文已影响21人  御雪飞斐

前言

期待您移步上篇:OpenGL笔记一:专业名词

OpenGL渲染架构

OpenGL 渲染流程分为两个部分:Client 和 Server。
Client:指CPU上存储的一些代码。比如:OpenGL API、C/C++。
Server:为GPU硬件部分,主要由Vertex Shader、Primitive Assembly、Fragment Shader等。


OpenGL渲染架构.jpg

OpenGL是基于C的API,因此它⾮常便携且受到⼴泛⽀持。作为C API,它与基于Objective-C的Cocoa应⽤程序⽆缝集成。 OpenGL提供应⽤程序⽤于⽣成2D或3D图像的函数。您的应⽤程序将渲染的图像呈现给屏幕或将它们复制回⾃⼰的内存。

OpenGL规范没有提供⾃⼰的窗⼝层。它依赖于OS X定义的功能来将OpenGL绘图与窗⼝系统集成。您的应⽤程序创建OS X OpenGL 渲染上下⽂并将渲染⽬标附加到其上(称为可绘制对象)。渲染上下⽂管理OpenGL状态更改和通过调⽤OpenGL API创建 的对象。


OpenGL -2.png

正投影/透视投影

正投影

正投影.png

通常在2D会图中使用正投影,并在我们的几何图形中将坐标设置为(x, y, 0.0)。
把上图笛卡尔可视区域叫做视景体,视景体外的几何图形将会被裁减掉,也就是说,它将被沿着视景体的边界进行裁剪。

透视投影

透视投影.png

透视投影会进行透视除法对距离观察者很远的对象进行收缩。可以理解为外部是观察者人眼(摄像机)如图所示,图中一个金子塔形被截断后的形状叫frustum(平截头体,我更愿意理解为视角金字塔)。它的观察方向是从塔的尖端到宽阔端。
代码:

//声明GLFrustum类对象
GLFrustum   viewFrustum;
//GLFrustum类通过setPerspective 方法构建一个视角金字塔
viewFrustum.SetPerspective(float fFov , float fAspect ,float fNear ,float fFar)
/*
fFov:垂直方向上的视觉角度
fAspect:纵横比,水平方向的宽度与⾼度之比
fNear:近,观察者的距离
fFar:远,观察者的距离
*/

期待您移步下篇:OpenGL笔记三:固定管线着色器和基本图元

上一篇下一篇

猜你喜欢

热点阅读