美文网首页
OpenGL ES 加载几何图形

OpenGL ES 加载几何图形

作者: 忆痕无殇 | 来源:发表于2019-07-11 17:19 被阅读0次

    一:基本图形硬件流水线设计
    应用程序层--->硬件抽象层--->硬件层

    图形硬件流水线设计.jpg
    1:应用层:
    游戏和应用层软件开发人员为主体,通过调用API进行上层开发,不需要考虑移植性问题。
    应用程序层主要与内存,CPU打交道。诸如碰撞检测,场景图监理,视锥裁剪等经典算法 在此阶段执行。在阶段的末端,几何体的数据(顶点坐标,法向量,纹理坐标,纹理)等通过数据总线传送到图形硬件。
    2:硬件抽象层:
    抽象出硬件的加速功能,进行有利于应用层开发的封装,并向应用层开发API。
    在这一层,我们目前使用的是DirectX与OpenGL。对于这一部分,主要是一些API等的调用。
    3:硬件层:
    将硬件驱动提供给抽象层,以实现抽象层加速功能的有效性。
    硬件测过在渲染流水线中最为复杂,也最为重要。可编程渲染流水线与固定渲染流水线的区别在于是否对着色器进行编程。
    首先我们了解固定管线主要分为以下几个阶段:顶点变换--->图元装配与光栅化--->片段纹理映射和着色--->光栅化操作。
    固定管线流程图参照下图。
    固定管线流程图.jpg
    可编程管线参照下图。
    可编程管线.jpg

    4:Shader(着色器)。着色器其实就是一段在GPU运行的程序。我们平时的程序,是在CPU运行。由于GPU的硬件设计结构与CPU有着很大的不同,所以GPU需要一些新的编程语言。
    5:渲染流水线有两种,其中一种为可编程渲染流水线,另一种为固定渲染流水线(也称可编程管线和固定管线)。渲染流水线可否编程,取决于程序员能否在顶点着色器以及片元着色器上进行编码。而现在的渲染流水线基本是可编程的。当然,它们也支持固定渲染流水线的功能。

    二:GPU图形渲染管线
    应用程序阶段--->几何阶段--->光栅阶段


    GPU图形渲染管线.jpg

    1:CPU与GPU之间的关系
    GPU具有高并行的结构,所以在处理图形数据和复杂算法比CPU更加有效率。
    CPU在执行任务的时候,一个时刻只会处理一个数据,不逊在真正意义上的并行,而GPU则有多个处理器,在一个时刻可以并行处理多个数据。

    2:逐片段操作


    逐片段操作.jpg

    3:几何处理阶段
    几何阶段主要负责大部分多边形操作和顶点操作,包括顶点着色、坐标变换、生成图元、投影、裁剪、屏幕映射等过程,其中顶点着色、坐标变换由顶点着色器完成。

    4:坐标系详细概念
    1)世界坐标系 : 坐标系统主要用于计算图形场景中的所有图形对象的空间定位和定义。
    2)局部坐标系:独立于世界坐标系来定义物体几何特性。
    3)观察坐标系:观察坐标系通常是以视点的位置为原点,通过用户指定的一个向上的观察向量来定义整个坐标系统,观察坐标系主要用于观察者的角度对整个世界坐标系内的对象进行重新定位和描述,从而简化几何物体在投影面的成像的数学推导和计算。
    4)投影坐标系:物体从世界坐标系描述转换到观察坐标后,可将三维物体投影到二维表面上,即投影到虚拟摄像机的胶片上,这个过程就是投影变换。以胶片中心为参考原点的空间坐标系称为投影坐标系,物体在投影坐标系中的坐标称为投影坐标。
    5)设备坐标系:是图形设备上采用的与具体设备相关的坐标系。设备坐标系一般采用整数坐标,其坐标范围由具体设备的分辨率决定。设备坐标系上的一个点一般对应图形设备上的一个像素。由于具体设备的限制,设备坐标系的坐标范围一般是有限的。
    6)规格化设备坐标系:是为了避免设备相关性而定义的一种虚拟的设备坐标系。规格化坐标系的坐标范围一般从0到1,也有的是从-1到+1.采用规格化设备坐标系的好处是屏蔽了具体设备的分辨率,使的图形处理能够尽量避开具体设备坐标的考虑。实际图形处理时,先将世界坐标转换成对应的规格化设备坐标,然后再将规格化设备坐标映射到具体的设备坐标上去。
    7)屏幕坐标系统:也称设备坐标系统,它主要用于某一特殊的计算机图形显示设备(如光栅显示器)的表面的点的定义,在多数情况下,对于每一个具体的显示设备,都有一个单独的坐标系统,在定义了成像窗口的情况下,可进一步在屏幕坐标系统中定义称为视图区(view port)的有界区域,视图区中的成像即为实际所观察到的。

    相关文章

      网友评论

          本文标题:OpenGL ES 加载几何图形

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