可编程处理器、不可编程单元和3D应用程序等模块是通过数据流链接起来的。具体数据执行流程是:
1)三维应用程序(3D Application or Game)通过调用图形库( OpenGL or Direct3D)提供的3D API函数将几何模型和图形命令发送给图形库,图形库接到调用命令后将几何模型中图元以顶点数据流的形式发送给GPU前端模块(GPU Front End ),数据流中每个顶点存储了位置、颜色、纹理数据等数据。
2 ) GPU的前端模块主要对顶点数据执行观察变换、计算纹理坐标、颜色等,处理后的数据传送给图元处理模块(Primitive Assembly)。
3 )图元处理模块主要根据图元几何拓扑信息将顶点数据组织成由三角形、线段、点构成的数据流并完成投影空间的裁减。
4)图元处理模块将处理过的数据流传送给光栅化和插值模块(Hasterization & InterpolaLion ),该模块根据顶点的位置、颜色、纹理坐标利用插值算法完成三角形等图元的扫描转换和光栅化。
5)在光栅化数据传送给帧缓冲存储器(Frame Buffer)之前还需要经过光栅操作模块(Raster Operations)的处理。
6)另外,除了上述不可编程器处理数据流程外,Cg语言允许用户为顶点处理器和片断处理器编程。顶点处理器从GPU前端模块提取数据并利用其内部的控制器完成关于顶点的数值、逻辑、灯光、雾化、衰减、几何操作等计算,计算后的数据传送给图元处理模块;片断处理器具有顶点处理器同样强大的计算能力,但它主要执行纹理计算,处理后的数据送光栅操作模块。GPU的可编程器件内含大容量的存储器和寄存器并且具有分支和循环执行能力,提供了强大的控制能力。
原文链接:https://www.f2er.com/javaschema/284334.html