雖然遊戲引擎能夠滿足遊戲開發的絕大部分需求,但是如果僅僅會使用引擎而不懂得遊戲引擎的運作原理和圖形處理原理,勢必會淪爲引擎的奴隸。爲了讓自己不僅能夠知其然,還要能知其所以然,決定從OpenGL開始研究圖形學和遊戲引擎開發技術。
前面還有很長的路,慢慢來。
環境配置
和往常一樣,還沒開始研究OpenGL就開始在網上找OpenGL的庫,結果找了好久都沒找到最新的庫,官網上也都是文檔(如果誰有最新的庫希望能共享一下,謝謝)。後來通過找超級寶典的源碼找到了一套比較齊的庫,下載地址:http://download.csdn.net/detail/ylbs110/9547355
引用庫和頭文件的方法很多,直接將文件拖到工程下就可以引用。本文講的是在工程外引用lib和頭文件的方法。dll需要放在工程項目目錄下。
lib
打開工程屬性頁面。
和其他C++工程一樣,將所需lib添加到鏈接器的輸入中的附加依賴項:
然後將包含該lib的文件夾路徑添加到鏈接器常規選項的附加庫目錄:
頭文件
開發中需要引用的頭文件路徑需要添加到VC++目錄的包含目錄中:
基本流程
由於之前自學過CG的Shder,所以在看書之前還以爲它會和Shader一樣從數據引用開始,接觸之後才發現和其他庫一樣,也是通過調用函數來實現。
基本流程:
- 初始化圖形庫
- 設置顯示狀態(顯示模式,窗口大小)->
- 創建窗口
- 在窗口上進行繪製
- 添加監聽
- 錯誤檢查
- 創建渲染環境
- 消息循環
代碼示例如下:
//初始化GLUT庫
glutInit(&argc,argv);
//告訴GLUT庫,在創建窗口時要使用哪種類型的顯式模式
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
//告訴GLUT窗口的大小,需要在下一個語句之前調用
glutInitWindowSize(800, 600);
//創建以“Triangle”爲標題的窗口
glutCreateWindow("Triangle");
//窗口大小監聽,ChangeSize爲自定義方法名
glutReshapeFunc(ChangeSize);
//內容重繪監聽,RenderScene爲自定義方法名
glutDisplayFunc(RenderScene);
//按鍵監聽,SpecialKeys爲自定義方法名
glutSpecialFunc(SpecialKeys);
//檢查初始化過程中是否出現問題
GLenum err = glewInit();
if (GLEW_OK != err){
fprintf(stderr,"GLEW Error:%s\n",glewGetErrorString(err));
return 1;
}
//我們將在這裏進行預加載文理,建立幾何圖形、渲染器等工作
setupRC();
//開始主消息循環,這個函數負責處理所有操作系統特定的消息、按鍵動作等,直到我們關閉程序爲止,只需調用一次
glutMainLoop();
轉載請註明出處:http://blog.csdn.net/ylbs110/article/details/51648780