逐片段操作——
光栅化阶段生成的颜色、深度、模板和屏幕坐标作为逐片段操作的输入,逐片段操作包括像素归属测试(确定帧缓冲区中某个位置的像素目前是不是归OpenGL ES所有,不属于当前OpenGL ES上下文时则不显示这些像素,在OpenGL ES内部进行)、裁剪测试(确定某个位置是否位于作为OpenGL ES状态的一部分的裁剪矩形范围内,没有则被抛弃)、模板测试(在模板值上进行测试以确定片段是否应该被拒绝)、深度测试(在深度值上进行测试以确定片段是否应该被拒绝)、混合(将新生成的片段颜色值与保存在帧缓冲区对应位置的颜色值进行组合)、抖动(最小化因为使用有限精度在缓冲区中保存颜色值而产生的伪像),最后前往帧缓冲区,光栅化生成的片段只能修改帧缓冲区中对应位置的像素。在逐片段操作中,对于未被拒绝的片段,可以在帧缓冲区的对应位置写入颜色、深度和模板值,是否写入及如何写入还取决于启用的相应写入掩码。OpenGL ES 3.0提供了从帧缓冲区读回像素的接口,删除了逐片段操作阶段的OpenGL ES 2.0和1.x中的Alpha测试和逻辑操作,由于片段可能被片段着色器抛弃,所以Alpha测试可以在片段着色器中进行,而逻辑操作很少被应用程序使用。
上面在逐片段操作阶段提到了OpenGL ES 3.0与之前版本的区别,下面介绍一下OpenGL ES 3.0新增的主要功能:
(1)纹理:允许应用程序进行伽马矫正渲染的sRGB纹理(相对于线性空间)和帧缓冲区,保存一组2D纹理的2D纹理数组(如应用于纹理动画,之前需要在单个2D纹理中平铺动画帧并修改纹理坐标改变动画帧来实现),3D纹理(之前通过扩展才能支持3D纹理,如应用于医学成像等三维渲染程序),深度纹理与阴影比较(深度纹理的最常见用途是渲染阴影),无缝立方图(立方图可以进行采样如过滤来使用相邻面的数据并删除接缝处的伪像),浮点纹理(支持16位半浮点纹理并可以过滤,支持32位全浮点纹理但不能过滤),ETC2/EAC纹理压缩(纹理压缩利用纹理缓存提供了更好的性能,减少了GPU内存占用,之前使用供应商提供的专用纹理压缩格式,现在提供了标准的纹理压缩格式),整数纹理(支持渲染和读取保存为未规范化有符号或无符号8位、16位、32位整数纹理),非2幂次纹理(NPOT,之前纹理尺寸都为2的幂次),纹理细节级别(LOD,流化mipmap)功能,纹理调配(引入新的纹理对象状态以允许独立控制纹理数据每个通道R、G、B、A在着色器中的映射),不可变纹理(应用程序在加载数据之前指定纹理格式和大小),最小尺寸增大(远大于之前的纹理资源限制)。除了前面提到的格式之外,还包括对11-11-10RGB浮点纹理、共享指数RGB9-9-9-5纹理、10-10-10-2整数纹理以及8位分量有符号规范化纹理的支持。
(2)着色器:二进制程序文件(离线,运行时不需要链接),强制的着色器在线编译器,非方矩阵(可以减少执行变换所需的指令),全整数支持(整数标量、向量、操作、内建函数、纹理、颜色缓冲区等) ,质心采样(为了避免在多重采样时产生伪像,可以用质心采样声明顶点着色器的输出变量和片段着色器的输入),平面/平滑插值程序(显式声明顶点着色器输出、片段着色器输入的插值方式为平面或平滑),统一变量块(统一变量组成的块,可以更高效地加载,也可以在多个着色器程序间共享),布局限定符(显式绑定顶点着色器输出、片段着色器输入的布局,也可以控制统一变量块的内存布局),实例和顶点ID(在顶点着色器中访问顶点索引、实例渲染ID),片段深度(片段着色器显式控制片段深度而不是依赖于深度插值),宽松的限制(着色器不再限于指令长度,完全支持变量为基础的循环和分支,并支持数组索引),新的API等。
(3)几何形状:变换反馈(可以在缓冲区对象中捕捉顶点着色器的输出,如GPU粒子动画),布尔遮挡查询(查询任何像素是否通过深度测试),实例渲染(有效渲染几何形状类似但属性不同的对象,如人群),图元重启(如为新图元使用三角形条带时使用特殊的索引值即可而不用专门生成退化的三角形),新顶点格式等。
(
因特网协议(IP)用于连接多个分组交换网,可提供在具有固定地址长度的主机之间传送数据报,以及根据各个数据报大小的不同,在需要时分段和重组数据报的功能。IP仅限于将数据从源端传到目的端,而不提供可靠的传输服务。它没有端到端或节点到节点的确认、流量控制等常见的主机到主机协议的机制。在传送出错时,IP通过因特网控制消息协议(ICMP,Internet Control Message Protocol)报告,ICMP在IP模块中实现。
IP可实现寻址和分段两个基本功能。IP根据数据报头中所包含的目的地址将数据报传送到目的端,传送过程中对道路的选择称为路由。当一些网络内只能传送小数据报时,IP将数据报分段,并在报头注明。数据报也可以被标记为“不可分段”,如果一个数据报被如此标记,那么在任何情况下都不能对它进行分段。如果因此而到不了目的地,那么数据报就会在中途被抛弃。
上一篇:可编程着色功能的图形管线怎么理解?为什么说IP是一个无连接协议?
下一篇:最后一页