爲什麼想學OpenGL,厭煩了業務代碼,厭煩了學習使用各種框架,厭煩了碼蟻一樣的生活,房租,水電,面試,工作……
人總是要有理想的,以前學算法,學組原,也是人云亦云,必須要學這個。後面學前端也是,從HTML到JS到React到放棄。
我本科是物理專業的,想想曾經只出現在書本上的拉格朗日力學,萬有引力,波動力學,分子熱運動,能可視化的體現在電腦桌面上,也是對自己專業的一個交代吧,想當初大一立下的豪情壯志,4年內學完MAYA和3DMAX,UNITY,結果借的書一次沒翻開過。想想最近遊戲界出現的UE5,光線追蹤,聽到這些詞就足以讓人興奮。
不積跬步,無以至千里。餬口要有,夢想也要有。(寫這篇文章的我正在圖書館,我覺得我應該去當個圖書管理員)
本人能力有限,也是0基礎開始學OpenGL,學習能力強的建議自己去尋找學習資源,效率會更高
https://learnopengl-cn.github.io/
視頻可以去B站搜索閆令琪的視頻
書籍推薦《計算機圖形學》《計算機圖形學編程 使用OpenGl和C++》
不廢話了,先從環境搭建開始吧。
1.下載glfw
https://www.glfw.org/download.html
下載是一個壓縮包,解壓到本地,如下:(是不是太囉嗦了點)
2.下載Cmake
同樣解壓到本地,然後打開cmake-gui.exe
source code ,填寫我們之前解壓的glfw所在路徑
下面的build,當然也是在glfw路徑下新建一個build文件夾
點這個這個gui頁面的configure
我本地已經下載好了VS,我也不寫了,隨便搜了一下別人的安裝教程https://www.cnblogs.com/HGNET/p/12165001.html
然後點擊finish,如下
等一會
然後再點擊configure按鈕,然後點擊generate
這時我們的buidl文件下會生成一堆文件,如下
然後點擊這個glfw.sln文件
打開後選擇生成解決方案
3.下載GLAD
這裏我們不知道這個gl版本是多少,發現我之前安裝的AIDA64能看
http://www.aida64.com.cn/html/downloads.html
回到我們剛纔的GLAD頁面
選擇generate
下載glad.zip,並解壓
4.配置項目
前面一堆操作,我們得到了這些頭文件和庫文件,也就是.h和.lib,還有.c結尾的文件
現在回到VS,我們創建一個空白的解決方案
點擊創建後,打開我們的MyProject文件夾,長這樣
現在我們創建一個Libraries文件夾,像這樣
打開Libraries,創建include和lib文件夾,用來存放我們的.h文件和.lib文件,話說我這種C++零基礎的要不要去買一本C++ prime
把上面提到的文件都複製過來,如下
然後開始配置我們的VS
首先新建一個項目
選擇屬性,如下
在包含目錄下,添加我們的include文件路徑..\Libraries\include,如下
庫目錄也相同../Libraries/lib,如下
還有我們的輸入
然後點擊確定
新建一個hello world文件
裏面放兩行代碼
#include <glad/glad.h>
#include <GLFW/glfw3.h>
執行,出錯了
VS掌握的不好,先按照教程新建一個空白項目https://docs.microsoft.com/zh-cn/cpp/build/vscpp-step-1-create?view=vs-2019
刪去其它文件,只保留我們的庫文件夾,然後創建一個新項目
刪去已有的代碼
按F5執行報錯了,感覺自己宛如智障,
摸索了一個小時,覺得還是自己對include理解不夠
比如我上面寫的#include <glad/glad.h>,會去我設置的包含目錄E:\learn\OpenGL\MyProject\Libraries\include去找,因爲我是把所有的文件都放入include文件夾中的,所以應該改成 #include <glad.h>
現在給出正確的做法,由於複製learnopengl-cn網站上的源碼,比如這樣
這個include 文件夾下是有glad文件夾,glad文件夾下又又這個glad.h文件
所以統一按照它給的方式。
還是前面所說的幾個文件。給出文件目錄結構,各位可以先按我的文件結構弄好(要不直接複製到ide的lib文件夾下吧)
點擊去glad如下,
其它文件夾如下
然後打開VS,創建新項目
打開VS頁面如下
文件路徑如下
然後就是修改我們的屬性
然後新建一個main.cpp文件
複製下面的代碼
#include <glad/glad.h>
#include <GLFW/glfw3.h>
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
return 0;
}
像這樣
先按F5,看看效果
改成x64,再試下
先把之前提到的glad.c複製進來,再執行看看效果,複製到和我們的main.cpp同一路徑下
執行後仍舊報錯,看來還是得添加源文件
結果如下
再次執行
不知道搭建成功沒有,頂不住了,先到這裏吧