OpenGL實(shí)例教程08:插值
為什么需要插值?
回想一下我們繪制的三角形,只提供了三個(gè)頂點(diǎn)的數(shù)據(jù)??紤]下面這個(gè)問題:如何通過三個(gè)頂點(diǎn)的數(shù)據(jù)繪制三角形內(nèi)所有的像素?如果三個(gè)頂點(diǎn)顏色不同,如何確定頂點(diǎn)的顏色?答案就是查找。柵格化器會(huì)對來自頂點(diǎn)著色器的變量執(zhí)行的插值(相鄰像素產(chǎn)生差別)。?

渲染管線中的流程:
gl_Position 是一個(gè)包含頂點(diǎn)齊次坐標(biāo)的4向量。該向量的XYZ分量將除以W分量。
任何超出[-1,1]的分量都被剪切。
結(jié)果將被轉(zhuǎn)換為屏幕坐標(biāo)。
然后被光柵化器渲染到屏幕上。
光柵化器在圖形頂點(diǎn)之間插值(位置、顏色、法線)
執(zhí)行片段著色器“訪問”圖形內(nèi)的每個(gè)像素。
如果使用紋理呢?為了用紋理“覆蓋”圖形,需要為每個(gè)像素執(zhí)行采樣操作,為此需要提供像素對于的紋理坐標(biāo)。這些坐標(biāo)是插值的結(jié)果。
代碼展示:
頂點(diǎn)著色器:
其中的clamp函數(shù)的作用是,將第一個(gè)參數(shù)的值限制在第二個(gè)和第三個(gè)參數(shù)值之間。
片段著色器:
標(biāo)簽: