功能性

功能性
新API里的一些特色包括有: 阴影语言。一种独立于硬件之外的OpenGL 2.0阴影语言,与OpenGL 1.3有紧密的整合。现有的状态机又增加了可编程单元,将可增设OpenGL 1.3固定式的替代功能。新的着色器可自动纪录现有的OpenGL状态(例如进行一个简单的光源转换而无须覆写参数管理)。它以C为架构,加上容易理解的 向量和矩阵类型,并也将整合一些Renderman功能。这套语言会虚拟资源管线,因此对大多数的程序设计师来说便不用去考虑资源管理。将来也会有相同形 式、供顶点着色与片段着色之用的语言,并加上一些特别内建的功能和数据限定。 顶点处理。其功能在于照明、材质和几何图形的弹性。顶点程序将取代部分的OpenGL管线,像是:顶点转换;正规转换;正规化和尺寸重设; 照明;彩色材质应用程序;色彩强化;材质坐标产生;以及材质坐标转换。然而,顶点着色并无办法取代下列功能:透视投影与视觉坐标对应;柱状及用户剪裁;隐 面消除;原始组合;双面照明选择;多重模式处理;多边形平移;或多边形模式。 片段处理器。其功能为材质存取、插值计算与像素运算弹性。Open GL 2.0增加了片段处理器能力,将取代下列功能:内插值顶点数据运算;像素缩放;材质存取、缩放和偏向;材质应用;色表查找;雾化;旋绕;以及OpenGL 管线中的色彩矩阵部分。然而片段着色并没有取代下列功能:OpenGL的阴影模型;直方图;覆盖度;极值;像素所有权测试;像素封装和解封装;剪裁;点 刻;alpha测试;深度测试;模印测试;alpha混色;逻辑运算;抖动;或平面屏蔽。 封装和解封装运算。封装和解封装运算的目的在于将「应用像素」转换成一致性的像素群数据流。在数据传送到解封装处理器前先运用未封装储存模 式。解封装处理器和应用对OpenGL传输有关,而封装处理器则负责OpenGL对应用传输这部分,两者都跟复制运算没有关系。绘图子系统内的复制只使用 片段处理器。
OpenGL现有的「像素传输」运算是由片段处理器所支持,而非封装∕解封装处理器。片段处理器具有缩放、偏向、查找、旋绕等所需的能力。此外由 于ARB并不要求多余的硬件能力,封装∕解封装处理器因而便无需具备其它可编程单元所搭载的浮点运算能力。主要的运算能力为偏移、屏蔽以及转换为∕自浮点 数 - 那些和像素数据的应用对OpenGL转换有关的功能。在封装解封装处理器中运行的程序必需和目前的片段着色兼容,并和片段处理器搭配运行以实现 OpenGL像素管线。 数据移动与内存管理。为了增进性能,数据移动量必需减至最低。视觉处理的主要数据为:顶点数据(色彩、正规、位置、用户定义等)以及图像数 据(材质、图像、像素缓冲区)。建立与管理OpenGL对象的机制大体上就是定位、连结与通过相同接口控制对象,并运用顶点数组、图像、材质、着色、显示 清单以及像素缓冲区。
目前来说,OpenGL的内存管理还是黑箱作业;这也就是说所有的事项都会自动处理。因此应用程序无需了解究竟运算结果为何、运算要花多少时间、 无需去控制要配置多少储存空间以及这些对象要放在何处。因此,目前版本的OpenGL对于对象何时要被复制、搬移、删除或封装(片段整理)是无法加以控制 的。此外也不清楚内存资源的虚拟化。这样的结果是目前OpenGL仅有相当有限的能力去「要求一块空间」,而且只能为了预存材质才能进行这项要求。下图所 示为目前OpenGL内存管理的组织架构。

OpenGL 2.0将提供更好的内存管理,并提供应用程序对数据移动的控制能力,提供更好的顶点处理能力、将数据抓进OpenGL的更有效方法,OpenGL对象的直接存取。此外,内存管理功能能消除为增进数据流量而产生的数据备份,以大幅提升性能。