如果把渲染引擎看做一個(gè)畫(huà)家,那么畫(huà)家開(kāi)始作畫(huà)之前需要做一系列的準(zhǔn)備工作,譬如:布置好場(chǎng)景,擺好畫(huà)架,釘好畫(huà)布,調(diào)整好燈光,準(zhǔn)備號(hào)畫(huà)筆油彩,站好位置,然后才能開(kāi)始下筆作畫(huà)。
前期的這一系列準(zhǔn)備過(guò)程在D3D和Ogl這樣的渲染Api中對(duì)應(yīng)了一系列的接口函數(shù),這些函數(shù)初看起來(lái)又多又亂,有時(shí)調(diào)用順序還有一定的耦合,性,因此需要精心的組織這些接口,一種比較好
的方法是將這些接口組織成一個(gè)叫做渲染上下文(Rendering Context)的類。
這個(gè)類中具體包含哪些東西呢,羅列起來(lái)可以有這些:
1. 視圖設(shè)置相關(guān)(正交/投影,視口參數(shù)設(shè)置)
2. 繪制緩沖相關(guān)(創(chuàng)建刪除緩沖,綁定緩沖,設(shè)置當(dāng)前緩沖,清除緩沖,設(shè)置背景顏色)
3. 貼圖參數(shù)相關(guān)(是否使用貼圖,貼圖Filter模式,Wrap模式,Mipmap等)
4. Shader相關(guān)(創(chuàng)建/刪除Shader,設(shè)置Shader參數(shù))
5. 緩沖數(shù)據(jù)相關(guān)(頂點(diǎn)緩沖,索引緩沖等)
6. 材質(zhì)相關(guān)(Diffuse,Embient,Specular,Emit等)
7. 矩陣相關(guān)(World,View,Project等,及相關(guān)旋轉(zhuǎn)、平移、縮放操作)
8. 裁剪
9. Alpha(Blend,Test)
10. Stencil-Test
11. Fog
12. 燈光(啟用/關(guān)閉、燈光參數(shù))