OpenGL 渲染基礎(chǔ)代碼解析

一、工具類

1.GLTool 包含了了?大部分GLTool中類似C語?言的獨?立函數(shù)
2.GLMatrixStack 矩陣的工具類, 可以加載單元矩陣/矩陣/矩陣相乘/壓棧/出棧/縮放/平移/旋轉(zhuǎn)
3.GLFrame 矩陣工具類,表示位置通過設(shè)置 vOrigion, vForward, vUp
4.GLFrustum 矩陣工具類, 用來快速設(shè)置正/透視投影矩陣, 完成坐標(biāo) 3D->2D的映射過程
5.GLBatch 三角形批次類, 幫助類, 它可以傳輸頂點/光照/紋理/顏色數(shù)據(jù)到存儲著色器中

二、自定義常用的全局變量

1.GLShaderManager shaderManager;

  • 存儲著色器管理工具類似于 AFN 的管理者 manager, 用來初始化等等操作

2.GLMatrixStack modelViewMatrix;

  • 模型矩陣

3.GLMatrixStack projectionMatrix;

  • 投影矩陣

4.GLFrame cameraFrame;

  • 設(shè)置觀察者位置

5.GLFrame objectFrame;

  • 設(shè)置圖形環(huán)繞時視圖坐標(biāo)

//投影設(shè)置
6.GLFrustum viewFrustum; //容器器類(7種不不同的圖元對應(yīng)7種容器器對象)

  • 設(shè)置圖元繪制時投影方式
    a.GLBatch pointBatch;
    b.GLBatch lineBatch;
    c.GLBatch lineStripBatch;
    d.GLBatch lineLoopBatch; GLBatch triangleBatch;
    e.GLBatch triangleStripBatch;
    f.GLBatch triangleFanBatch;

三、常用的重要函數(shù)

main函數(shù)

1. int main(int argc, char* argv[])
程序入口.OpenGL 是?面向過程編程.所以你會發(fā)現(xiàn)利用OpenGL處理圖形/圖像都是鏈?zhǔn)叫问?以及基于OpenGL封裝的圖像處理框架也是鏈?zhǔn)骄幊碳凑{(diào)用各個函數(shù)方法
2.void ChangeSize(int w, int h)
?自定義函數(shù).通過 glutReshaperFunc (函數(shù)名)注冊為重塑函數(shù).當(dāng)屏幕?小發(fā)?變化/或者第?次創(chuàng)建窗?時,會調(diào)?用該函數(shù)調(diào)整窗口?小/視?大小.
3.void RenderScene(void)
?自定義函數(shù).通過 glutDisplayFunc (函數(shù)名)注冊為顯示渲染函數(shù).當(dāng)屏幕發(fā)?生變化/或者開發(fā)者主動渲染會調(diào)?用此函數(shù),?用來實現(xiàn)數(shù)據(jù)->渲染過程
1.系統(tǒng)?自動觸發(fā)
2.開發(fā)者?手動調(diào)?用函數(shù)觸發(fā).
4.void SetupRC()
設(shè)置你需要渲染的圖形的 相關(guān)頂點數(shù)據(jù)/顏?色數(shù)據(jù)等數(shù)
5.void SpecialKeys(int key, int x, int y)
鍵位設(shè)置,通過不同的鍵位對其進(jìn)行設(shè)置;控制Camera的移動,從而改變視口(一般就是特殊鍵位, 類似 f1, f2, 上下左右, 空格)
6.void KeyPressFunc(unsigned char key, int x, int y)
用戶敲擊”空格”鍵位觸發(fā):
1.判斷?用戶輸?入的是”空格”
2.設(shè)置窗?口名稱
3.手動觸發(fā)重新渲染

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容