1. 程式人生 > >OpenGL SuperBible中的glew和GLTools庫

OpenGL SuperBible中的glew和GLTools庫

這些天開始研究OpenGL,就買了本OpenGL超級寶典和OpenGL程式設計指南兩本書,(有人說程式設計指南不適合初學者,超級寶典的翻譯太爛),興高采烈地開啟超級寶典的書,發現依賴了各種庫,依賴glut庫尚能接受,畢竟OpenGL只是負責繪製而已,glew也勉強接受,但又要有GLTools,稍微看了下,GLTools應該是超級寶典作者寫的一個簡單庫,並用類封裝了一下,這裡我要吐槽的是類的命名規則!!!

OpenGL中型別名稱是以GL開頭的,比如GLfloat GLenum等等,而超級寶典的類命名也是以GL開頭的,這,,,,魚目混珠嗎?

吐槽歸吐槽,glew有官方網站,http://glew.sourceforge.net/

奇葩的GLTools已經絕跡了,有的要麼只提供編譯好的庫,要麼要積分,哼哼,本來就不是自己寫的,是不是過分了,不過還好找到了。

https://blog.csdn.net/sxc1989/article/details/60584970

這篇文章的連結中有一個GLTools的git連結,如下:

https://github.com/HazimGazov/GLTools

個人更改後的GLTools

https://download.csdn.net/download/bull521/10699557

 

裡面包含了原始檔和對應的cmake檔案,並沒有現成的庫檔案,需要自行編譯,我在ubuntu下嘗試著編譯了一下,發現GLTools.cpp第1060行和1072行有錯誤

稍微看了看原始碼才發現這個函式的返回值為GLbyte*,而作者卻在這裡返回了false,雖然c語言認為false == NULL == 0,不過有的編譯器還是會報錯的,改一下就好了,把false改為NULL或者nullptr。

另外,我發現GLTools提供的cmake檔案是提供安裝的,這樣有一個小小的問題,就是cmake官方並沒有提供對應的Find模組(即cmake查詢是否存在對應庫的標頭檔案路徑和原始檔路徑);當然,沒有應該也沒關係,因為我發現在ubuntu下安裝的路徑是/usr/include/下,也就是說,標頭檔案是可以直接引用的,不過在編譯檔案時需要加上 -lgltools連結庫。

另外一個解決辦法就是照著官方給的CMakeLists.txt寫一個只是編譯的功能,然後把這個整個資料夾放到專案的根目錄下

這樣對於專案來說比較合適,對於單檔案來說就不怎麼合適了。

注意:超級寶典中的GLTools依賴的庫比較多,至少需要glut(freeglut可以認為是glut的子集) glew。程式設計指南則只是使用了glut庫(至少目前是這樣)