因為實驗需要,我要使用opengl搭建乙個**駕駛環境。因為之前沒有接觸過opengl的相關知識,淦哥推薦通過nehe來進行學習,之後會零零散散做一些筆記用來進行記錄。學習的部落格參見【【翻譯】nehe opengl 教程】。
因為實驗需要,我需要使用c++進行整個專案的編寫。實驗之前,我們需要先知道怎麼用vs搭建乙個視窗程式,這裡我參考了【【win32】vs2010的窗體程式helloworld】。
需要注意的是,在實驗中,不推薦直接按照部落格中使用l對字串直接進行強制轉換的方式,這種方法在之後學習opengl過程中會出現很多不可避免的問題。同時這種方式在輸出中文的時候也會出翔錯誤,這個不是我們想看到的。所以我們還需要進行相關的設定。
設定方法這裡我們參考【vs2005中關於char轉換成lpcwstr的問題】。
設定完成以後,我們就能很正常的輸出字串了,也不再需要在字串前面加上l進行強制轉換,之後進行nehe學習的時候也能更加簡單。
我在實驗開發中使用的是vs2015專業版進行開發。需要使用到的所有庫檔案和環境搭建可以參考【vs2015下opengl庫的配置】,環境搭建完成之後,嘗試include某些庫頭,如果沒有報錯,那就說明環境搭建成功。
實驗過程中,最好從教程中,乙個函式乙個函式向你的專案中新增,如果一次性新增太多的話,報錯太多可能會讓你很崩潰。
在新增函式的過程中,在開始呼叫pdb檔案之後,可能會出現很多的「無法查詢或開啟pdb檔案」錯誤資訊,為了解決這個問題,你可以參考【visual studio 「無法查詢或開啟pdb檔案」解決方法 】。
如果在環境搭建過程中還出現了其他問題,試著參照【配置opengl時遇到的一些問題】進行解決。
經過仔細閱讀原始碼以及理解,整個nehe第一課的**框架結構如下。
理解過程中,我們其他的目前可以不用很掌握,但是一定要清楚,在本次專案中,作者將opengl的著色描述表定義為 hrc。要讓您的程式能夠繪製視窗的話,還需要建立乙個裝置描述表。windows的裝置描述表被定義為 hdc。dc將視窗連線到gdi(graphics device inte***ce圖形裝置介面)。而rc將opengl連線到dc。變數 hwnd 將儲存由windows給我們的視窗指派的控制代碼。最後,程式的例項儲存在hinstance中(例項)。
通過上面的關係,我們能夠更加容易的理解視窗的建立與登出的過程中,作者**中每一步所做的目的和意義。
在讀完**之後,我們知道本次實驗中僅僅只是建立乙個640*480的視窗。並沒有任何內容顯示,另外因為我們在初始化設定中(initgl這個方法中定義的)將螢幕的初始rgb值設定為(0.0f, 0.0f, 0.0f, 0.5f),所以程式執行的結果如圖所示。
OpenGL學習筆記(一)初識OpenGL
早期的opengl使用立即渲染模式 immediate mode,也就是固定渲染管線 從opengl3.2開始,規範文件開始廢棄立即渲染模式,並鼓勵開發者在opengl的核心模式 core profile 下進行開發。opengl的一大特性就是對擴充套件 extension 的支援。opengl自身...
OpenGL學習筆記(一)
opengl是一種在計算機上進行2d 3d圖形繪製的技術規範,嚴格上來說不能算作一種具體技術。不過,現在有opengl庫來提供了對這種規範的封裝,於是也演變為今天對opengl api的使用。opengl需要硬體支援的,就如同對微軟directx的支援一樣。上層應用軟體都是通過opengl的庫介面,...
OpenGL學習筆記 一
opengl相關概念介紹 2d 透視 3d 渲染 就是對乙個三維物體進行幾何描述並且把它轉換為螢幕上的一幅影象.紋理貼圖 通過一幅影象向乙個多邊形提供額外細節的技巧稱為紋理貼圖,所提供的影象稱為紋理,而紋理中每個單獨的元素稱為紋理單元。而在乙個物體的表面上拉伸或壓縮紋理單元的過程稱為過濾。混合 bl...