一、glm的優(yōu)點(diǎn)
glm是一個發(fā)展了十年以上的數(shù)學(xué)庫,這個庫很不錯。很多教材,書籍,資料大量使用glm,了解glm有助于閱讀這些資料。
1.模仿glsl的接口
這個實(shí)在是非常方便理解和記憶,你不需要在c++和glsl中使用兩套完全不同的接口
2.大量采用模板
代碼復(fù)用率非常高,而且結(jié)構(gòu)可以說是模板類庫的典范
3.數(shù)學(xué)化的,和大腦導(dǎo)向的思維方式
和其他數(shù)學(xué)庫不同,glm的代碼偏向數(shù)學(xué)理論的使用,有很多地方是以直觀和復(fù)用為主的
4.接口友好,精度有保證
大量模板參數(shù)的使用,既擴(kuò)充了接口數(shù)量,又保證了支持不同精度,和類型轉(zhuǎn)換的正確。而這些恰恰是非模板數(shù)學(xué)庫的弱項(xiàng)。
二、glm有趣和獨(dú)特的設(shè)計
1.detail名字空間
使用detail名字空間,隔離“內(nèi)部函數(shù)”,這對于用戶程序員來說,很容易知道哪些函數(shù)是可以直接調(diào)用的,并且對于代碼補(bǔ)全也很有幫助。
2.類型設(shè)計,只提供+-x/,其他計算放到外面
對于vec,mat等類型,類本身只提供了+-x/等基礎(chǔ)運(yùn)算,而其他運(yùn)算,比如求模,點(diǎn)乘,叉乘,矩陣乘法,特殊矩陣構(gòu)造等等都放到外部通過全局函數(shù)來提供,而不是提供一個類成員函數(shù)。之所以這樣做,是因?yàn)槠渌麖?fù)雜函數(shù),都可以看成是基本運(yùn)算的組合(有些全局函數(shù)的編寫,還需要增加三角函數(shù)調(diào)用來支持)。
這樣做的優(yōu)點(diǎn)非常多
1.保證類型本身足夠簡單,非常容易閱讀與維護(hù)
2.比起成員函數(shù),全局函數(shù)可以很容易的修改替換(因?yàn)樵诓煌募校I踔劣脩糇约簲U(kuò)展可以通過增加頭文件來完成
3.高度復(fù)用性,比如求模函數(shù),外部一個函數(shù)接口,內(nèi)部代碼完全一樣,只靠模板參數(shù)來匹配。反例就是,如果你使用成員函數(shù),你將不得不對于每一個類型提供一個求模函數(shù)
3.全局函數(shù)+模版類偏特化——實(shí)現(xiàn)函數(shù)調(diào)用的轉(zhuǎn)發(fā)
很多全局函數(shù),只提供一個入口調(diào)用,內(nèi)部使用模版類偏特化來匹配模板參數(shù),完成對應(yīng)類型的函數(shù)調(diào)用轉(zhuǎn)發(fā),這個寫法非常有趣。我們知道全局函數(shù)調(diào)用,使用一個入口,可以非常方便的修改,例如加入條件編譯宏等,而模版類偏特化又保證了擴(kuò)展性。
4.復(fù)用優(yōu)先
例如,對于矩陣相乘,glm直接采用向量寫法。glm的編寫,在很多地方,直接采用向量。這一方面,極大簡化了代碼量,同時也體現(xiàn)出作者對于數(shù)學(xué)的深刻理解。
而很多其他數(shù)學(xué)庫不同,向量運(yùn)算采用不多,比如矩陣相乘直接采用元素寫法。
三、難點(diǎn)
1.glm對于數(shù)學(xué)功能拆的很細(xì)
同一個類型的很多功能,分散在不同的文件中,這閱讀起來有一定的難度,尤其是缺乏數(shù)學(xué)基礎(chǔ)的人
2.大量使用模板
對于模板不熟悉的人,閱讀有難度,現(xiàn)在國內(nèi)移動游戲項(xiàng)目開發(fā)很少直接大量用c++了,大量模板的人估計就更少了
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:有趣又好玩的glm庫-創(chuàng)新互聯(lián)
分享URL:http://www.rwnh.cn/article0/csseoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站改版、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、定制網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)