【GAMES101】光栅化

光栅化就是把物体给画在屏幕上,这个屏幕就是一堆像素的组合

这个像素pixel,是picture element的简称,抽象的来说,一个像素就是一个带有统一颜色的方块

这个颜色呢是由红绿蓝三原色组成的

对于一个屏幕上的像素来说,可以用坐标来定位每个像素,那么一个像素(x,y)的中心点就在位置(x+0.5,y+0.5)上

对于一个标准的正方体,假设屏幕的宽为width,高为height,可以用这样一个变换矩阵把它缩放到屏幕大小,这里我们先忽略z坐标

这里我们先来说说如何把一个三角形给光栅化,即把三角形绘制到屏幕上

为什么先说三角形呢,这是因为三角形是最简单的多边形,任何的多边形都可以用三角形来表示,三角形具有良好的性质

通过三角形的组合可以表现很多物体

那么如何用一堆像素来表示一个三角形呢?或者更确切的说,对于三角形边界上的像素该如何取舍

 我们可以通过判断每个像素的中心点是否在三角形内部来决定这个像素需不需要上色

如何判断某个点在不在一个三角形内部呢?这个其实我们在第二节课将线性代数入门的向量叉乘的时候就说过了

如果 P0P0 × P0Q 和 P1P2 × P1Q 和 P2P0 × P2Q 的方向是相同的,那么点Q就在三角形内部

对于那些刚好在三角形边上的点如何取舍呢?这个可以自由决定,games101是不做处理

为了减少计算量,实际上我们并不需要遍历整个屏幕的像素点,我们只需要遍历一个能够覆盖三角形的矩形区域内的像素点就可以了

 然后我们就可以得到这样的结果

你会发现,它并不是我们想要的效果,我们希望这个三角形长这样

这个现象叫锯齿,Jaggies

关于这个问题怎么解决呢?我们下节课再说 

猜你喜欢

转载自blog.csdn.net/weixin_62264287/article/details/134898748