【GAMES101】Lecture 05 光栅化

文章介绍了光栅化的过程,涉及像素、三角形的绘制、判断像素是否在三角形内以及处理锯齿现象的方法,预告了后续课程将深入探讨解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这个现象叫锯齿,Jaggies

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员萌芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值