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