學習著色器,並理解著色器的工作機制,就要對opengl的固定功能管線有深入的了解。
首先要知道幾個opengl的術語
渲染(rendering):計算機根據模型(model)建立影象的過程。
模型(model):根據幾何圖元建立的物體(object)。
幾何圖元:包括點、直線和多邊形等,它是通過頂點(vertex)指定的。
最終完成了渲染的影象是由在螢幕上繪製的畫素組成的。在記憶體中,和畫素有關的資訊(如畫素的顏色)組織成位平面的形式,位平面是一塊記憶體區域,儲存了螢幕上每個畫素的乙個位的資訊。例如,它指定了乙個特定畫素的顏色中紅色成分的強度。位平面又可以組織成幀緩衝區(framebuffer)的形式,後者儲存了圖形硬體為了控制螢幕上所有畫素的顏色和強度所需要的全部資訊。
opengl的固定功能管線
關於渲染管線將什麼呢?無非就是在opengl的管道當中各個部分的功能以及如何在管道當中形成了我們想要的最終的一幅圖.(畫素).而管線當中的操作可分為以下幾個部分:
階段1. 指定幾何物件.
如:點 線三角形.等一些幾何圖元..opengl繪製幾何圖元的方法有以下三種:
上面這兩種模式則是立即模式.即指定完圖元之後會被立即渲染.即將所有資料發往渲染管線後立即被渲染.
階段2 頂點處理操作:
不管以上的幾何物件是如何指定的,所有的幾何資料都將會經過這個階段,這個階段負責的則是逐個頂點的操作.
在這個階段能做的工作則是:
頂點變換:根據模型檢視和投影矩陣變換
光照計算和法線變換(法線矩陣 是模型矩陣的左上角3*3的逆矩陣)和法線規格化
紋理座標變換.(紋理矩陣)
材質狀態:紋理座標生成
而最重要的則是變換以及光照. 每個頂點在這個階段分別是單獨處理的.
這個階段所接收到的資料則是每個頂點的屬性特徵..輸出則是變換後的頂點資料.
階段3 圖元組裝
在頂點處理之後,頂點的全部屬性都已經被確定。在這個階段頂點將會根據應用程式送往的圖元規則如gl_points 、gl_********s 等將會被組裝成圖元。
階段4 圖元處理(裁剪消隱)
階段5 柵格化操作
階段6 片元處理
階段7 逐個片元的操作
這些操作將會最後影響其在幀緩衝區的顏色值.
階段8 幀緩衝操作
glcolormask、glstrncilmask、gldepthmask、glcleardepht、glclearstencil、glclearcolor等.將在這個階段影響寫入的值.
以上只是討論opengl 圖元繪製的基本過程那麼基於畫素影象繪製.幾乎形同之上..只是在光柵化處理前的操作不一樣.即經過畫素解碼畫素傳輸.柵格化最後形成片元...片元之後的處理完全一樣..
可程式設計管線可以替換的功能
在著色器程式設計領域..你將可實現
因為這三個階段所決定都是最重要效果的階段..對於這些的可程式設計將帶來非常大的好處以及可控制的渲染!!
在前面的固定功能管線提到了,在階段5:柵格化操作過程中, 片元的屬性會由圖元上頂點資料等經過插值而確定。在頂點著色器處理完畢後,opengl都會將頂點與頂點之間的片元(基本上可以理解為畫素)的屬性(如位置座標、紋理座標)進行線性插值。所以,在紋理座標為(1,0)和(0,0)中間的片元會得到乙個(0.5,0)的紋理座標,在紋理座標為(0,0)和(1,1)之間的片元會得到乙個(0.5,0.5)的紋理座標。然後將這些經過差值處理之後的片元交給片元著色器處理。片元著色器確定最終的片元顏色。
opengl渲染管線理論
opengl 渲染管線理論 這幾天稍微看了一些關於glsl的頂點著色以及片元著色的一些相關知識.目前來講還有乙個著色器則是geometry shader.我的顯示卡用不了這個功能.當然有點遺憾 在看了一些之後,大概了解了一些關於opengl渲染管線的知識.看了這個之後對於opengl的學習我想應當是...
OpenGL 渲染管線理論
學習著色器,並理解著色器的工作機制,就要對opengl的固定功能管線有深入的了解。渲染 rendering 計算機根據模型 model 建立影象的過程。模型 model 根據幾何圖元建立的物體 object 幾何圖元 包括點 直線和多邊形等,它是通過頂點 vertex 指定的。最終完成了渲染的影象是...
OpenGL 渲染管線理論
如 點 線 三角形.等一些幾何圖元.opengl繪製幾何圖元的方法有以下三種 1 一次乙個頂點.即使用glbegin glvertex glend 指定幾何物件.2 使用頂點陣列.如gldrawarrays.gldrawelements.等.一次性的繪製大量圖元.上面這兩種模式則是立即模式.即指定完...