美文网首页OpenGL 笔记
OpenGL笔记二:OpenGL 渲染流程及投影

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

作者: 御雪飞斐 | 来源:发表于2019-05-17 17:21 被阅读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笔记三:固定管线着色器和基本图元

    相关文章

      网友评论

        本文标题:OpenGL笔记二:OpenGL 渲染流程及投影

        本文链接:https://www.haomeiwen.com/subject/khwoaqtx.html