主权项 |
基于水平线扫描的三角形光栅化的实现,其特征为:输入包含三角形的三个顶点单精度浮点格式的坐标(X0,Y0)、(X1,Y1)、(X2,Y2),三个顶点对应的单精度浮点格式的属性{R0,G0,B0,A0,S0,T0,Z0}、{R1,G1,B1,A1,S1,T1,Z1}、{R2,G2,B2,A2,S2,T2,Z2},首先进行顶点顺序调整,确定最低点VB(XB,YB)、中间点VM(XM,YM)、最高点VT(XT,YT),在交换顶点顺序过程中对应点的属性也要交换,得到三角形的三条边TB、TM、MB,其中主要边为TB,利用叉乘积(XT‑XB)(YM‑YB)‑(XM‑XB)(YT‑YB)的符号确定主要边在左边还是右边:符号为1,主要边在右边,反之主要边在左边;计算三条边与最低点所在水平线的交点,分别计算三个交点坐标(XTB,Ymin)、(XMB,Ymin)、(XTM,Ymin)(其中Ymin为YB的整数上界转化成单精度浮点数),将这三组坐标和三条边的斜率倒数写入FIFO;计算三角形的属性增量,采用平面方程来计算(以Z属性为例)三角形的三个顶点的X、Y坐标与Z坐标构成一个空间平面,分别计算出A、B、C即可得到Z属性分别沿X方向和Y方向的属性增量,其余属性类似处理,将属性增量和最低点属性也写入FIFO。 |