1、使用glfw初始化時會初始化失敗
由于每一個人設(shè)置的錯誤提示不同奴饮,因此統(tǒng)稱為OpenGL窗口創(chuàng)建初始化失敗烧给。
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
通常我們會將上面兩句的版本與OpenGL的版本混淆,切記缝龄,這個版本為glfw的版本,與OpenGL的版本無關(guān)挂谍,當(dāng)我們把該版本改為使用的glfw的版本號即可叔壤。
1.1 后安裝了glfw版本庫,系統(tǒng)自帶版本為高版本口叙。
例如我的目前系統(tǒng)自帶的OpenGL版本為下面所示:
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.4
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.3.4
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
這種情況下百新,如果沒有重新安裝glfw庫,我們使用4.6或者3.3甚至3.2都不會報錯庐扫,都可以創(chuàng)建出一個窗口。
但是我安裝了一個glfw3.2.x版本的glfw仗哨,所以造成glfw初始化時使用glfw為后安裝的glfw3.2.x版本的庫函數(shù)進(jìn)行初始化的形庭,所以主次版本必須設(shè)置為3和2才可以創(chuàng)建窗口。
當(dāng)然厌漂,如果只有這么簡單的就萬事大吉那可太好了萨醒,由于安裝了glfw,導(dǎo)致系統(tǒng)原先自帶的4.6版本的無法使用苇倡,進(jìn)而造成了三角形繪制富纸,也就是頂點著色器和片段著色器的創(chuàng)建出現(xiàn)了not support 3.3.的情況。
1.2 如果使用的源碼安裝glfw旨椒,可以使用以下命令進(jìn)行卸載
筆者采用的是deepin系統(tǒng)晓褪,類似于ubuntu系統(tǒng)
1. 首先找到cmake編譯后的文件夾,進(jìn)入文件夾
2. sudo make uninstall
3. 如果步驟2出現(xiàn)了問題综慎,可以重新安裝make install涣仿,然后在執(zhí)行步驟二
4. 執(zhí)行sudo xargs rm < install_manifest.txt
從而完成卸載,卸載完成后示惊,使用
glxinfo | grep "OpenGL"
查看當(dāng)前的OpenGL的版本好港,如果為高版本,使用3米罚,3钧汹。如果可以成功創(chuàng)建窗口,那么代表卸載成功了录择。
1.3 進(jìn)一步加深對OpenGL版本錯誤無法創(chuàng)建窗口的解決
1.3.1 關(guān)于作者出現(xiàn)版本錯誤的原因
- 安裝了glfw3.2的環(huán)境拔莱,所以只能使用3碗降,2的版本方案繪制窗口
- 機(jī)身自帶OpenGL為4.6高版本,出現(xiàn)不兼容問題辨宠,無法繪制3.3版本以后的圖形
1.3.2 如果上述沒有解決遗锣,你可以這么做
- 你需要下載一個glfw3.3版本,重新使用cmake進(jìn)行編譯安裝
- 將安裝后的配置文件引入到鏈接庫嗤形。
1.3.3 glfw3.3.X版本操作
- 下載網(wǎng)址:https://www.glfw.org/download.html 選擇sourcePackage
- 編譯安裝
# 解壓文件并進(jìn)入到源文件
# 創(chuàng)建并進(jìn)入build
mkdir build
cd build
# cmake編譯源碼
cmake ..
# make編譯cmake生成的makefile
make
# 安裝
sudo make install
# 將glfw的配置鏈接到庫
sudo ldconfig
1.3.4 乘勝追擊精偿,重新進(jìn)行圖形繪制
- 無論是用3,2版本或者3赋兵,3版本笔咽,或者4,6版本均可正常繪制
注意:文中所說的版本均為標(biāo)題1中的代碼的版本編號
2霹期、出現(xiàn)not support 3.3叶组。錯誤的解決方案
查看是否有上述1中的問題。
如果沒有可以嘗試使用下面命令進(jìn)行解決历造。
MESA_GL_VERSION_OVERRIDE=3.3 ./你的可執(zhí)行程序名稱
如果還解決不了甩十,可以在評論區(qū)進(jìn)行交流。