之前用包围盒和重心坐标法做过光栅化实现,但是那个方法存在问题,这次要实现一个更高效的光栅化方法.
包围盒的问题
之前使用的包围盒方法确定光栅化范围,但是包围盒确定的范围是矩形,要光栅化的是三角形,那么每次都会有不需要的像素参加运算,一个面当然没啥问题,但是如果是100个面问题就大了.
改进方法
在 <3d游戏编程大师技巧> 中作者使用了三角形扫描线插值的方法,效率不错,实现方法类似下图:
通过计算三角形三条边的方程和每条扫描线的两个交点以确定光栅化x值的范围,然后就能够准确地进行光栅化计算,这样就不用考虑不可能到达的像素了.