1. 程式人生 > >【Notes_4】現代圖形學入門——光柵化、離散化三角形、深度測試與抗鋸齒

【Notes_4】現代圖形學入門——光柵化、離散化三角形、深度測試與抗鋸齒

跟著閆令琪老師的課程學習,總結自己學習到的知識點 >課程網址[GAMES101](https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html) >B站課程地址[GAMES101](https://www.bilibili.com/video/BV1X7411F744?from=search&seid=14782604898715382247) >課程資料[百度網盤](https://pan.baidu.com/s/11nKJemm-31TA6RkuE7_MWg)【提取碼:0000】 [toc](文章目錄) # 光柵化 ## Viewport Transform(視口變換) 將經過MVP變換後得到的單位空間模型變換到螢幕上,螢幕左邊是左下角為原點。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210125164250328.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc5NDQ0Mw==,size_16,color_FFFFFF,t_70) 所以視口變換的矩陣 $$M_{viewport}=\begin{pmatrix} \frac{width}{2}&0&0&\frac{width}{2}\\ 0& \frac{height}{2}&0&\frac{height}{2}\\ 0&0&1&0\\ 0&0&0&1 \end{pmatrix}$$ ## Rasterization:Draw to Raster Displays 主要是將已經經過視口變換的模型畫在螢幕空間上。 主要過程有: **(1)** 取樣 **(2)** 判斷畫素中心的位置與三角形的關係 ### 取樣 因為螢幕空間本身解析度已經給出,所以畫素點的數量也已經確認了,但是對我們可以通過以下方法提高效率,將可能有用的畫素點選取出來: 1.Bounding Box ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210125172854697.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc5NDQ0Mw==,size_16,color_FFFFFF,t_70) 2.Incremental Triangle Traversal ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210125172916981.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc5NDQ0Mw==,size_16,color_FFFFFF,t_70) ### 判斷畫素中心的位置與三角形的關係 主要應用的原理是利用向量的叉乘判斷點是否在三角形內。 虛擬碼如下 ```cpp for(int x =0 ;x