OpenGL ES 2 0 渲染管線 學習筆記

2022-05-07 12:54:10 字數 1532 閱讀 5746

圖中vertex shader和fragment shader 是可程式設計管線;

vertex array/buffer objects

頂點資料**,這時渲染管線的頂點輸入,通常使用 buffer objects效率更好。

vertex shader

頂點著色器通過矩陣變換位置、計算照明公式來生成逐頂點顏色已經生成或變換紋理座標等基於頂點的操作。

primitive assembly

圖元裝配經過著色器處理之後的頂點在裝配階段被裝配為基本圖元。opengl es 支援三種基本圖元:點,線和三角形,它們是可被 opengl es 渲染的。接著對裝配好的圖元進行裁剪(clip):保留完全在視錐體中的圖元,丟棄完全不在視錐體中的圖元,對一半在一半不在的圖元進行裁剪;接著再對在視錐體中的圖元進行剔除處理cull):這個過程可編碼來決定是剔除正面,背面還是全部剔除。

rasterization

光柵化。在光柵化階段,基本圖元被轉換為二維的片元(fragment),fragment 表示可以被渲染到螢幕上的畫素,它包含位置,顏色,紋理座標等資訊,這些值是由圖元的頂點資訊進行插值計算得到的。這些片元接著被送到片元著色器中處理。這是從頂點資料到可渲染在顯示裝置上的畫素的質變過程。

fragment shader

片元著色器通過可程式設計的方式實現對每個片元的操作。在這一階段它接受光柵化處理之後的fragment,color,深度值,模版值作為輸入,片元著色器可以拋棄片元,也可以生成乙個或多個顏色值作為輸出。

逐片段操作

畫素歸屬測試:這一步驟由opengl es內部進行,不由開發人員控制;測試確定幀緩衝區的位置的畫素是否歸屬當前opengl es所有,如不屬於或被另乙個視窗遮擋,從而完全不顯示這些畫素。

裁剪測試:判斷畫素是否在由 glscissor 定義的剪裁矩形內,不在該剪裁區域內的畫素就會被剪裁掉;

混合:是將片段的顏色和幀緩衝區中已有的顏色值進行混合,並將混合所得的新值寫入幀緩衝;

抖動:可用於最小化因為使用有限精度在幀緩衝區中儲存顏色值而產生的偽像。

framebuffer:這是流水線的最後乙個階段,framebuffer 中儲存這可以用於渲染到螢幕或紋理中的畫素值,也可以從framebuffer 中讀回畫素值,但不能讀取其他值(如深度值,模版值等)。

參考鏈結

opengl es 2.0 programming guide

OpenGL ES渲染管線

渲染管線 graphics pipeline 在 opengl es 1.0 版本中,支援固定管線,而 opengl es 2.0 版本不再支援固定管線,只支援可程式設計管線。什麼是管線?什麼又是固定管線和可程式設計管線?管線 pipeline 也稱渲染管線,因為 opengl es在渲染處理過程中...

OpenGL ES 渲染管線

頂點著色器是乙個可程式設計的處理單元 執行頂點的變換 透視矩陣 光照 材質的應用等與計算等頂點的相關操作 每個頂點執行一次頂點著色器 opengl es的工作流程為首先將原始的頂點幾何資訊及其他屬性傳送到頂點著色器中 經過頂點著色器處理後產生頂點座標 顏色 位置等後續流程需要的各項定點屬性資訊 然後...

openGL ES 2 0開發流程

一 新增必須的framework 框架 opengles.frameworks和quartzcore.framework 二 修改openglview.h 引入opengl的header,建立一些後面會用到的例項變數 caeagllayer eagllayer eaglcontext context...