我個人覺得C++程式庫類似演算法或物理引擎最需要的特性就是,
要計算的物件可以被繼承,可以用物件指標實作。
要計算的物件可以被包含,可以用template實作。
要計算的物件可以只使用部份功能,
可以用上面兩種方法實作只計算部份的函數,
用template可以實作靜態組合的資料型態,
指標可以任意轉型成需要的型態。
快速分配記憶體,需要一個好的memory pool,
有人使用繼承實作,需要mutithread就用singleton,
不然簡單的全域變數即可。
不知道是我腦子有問題還是怎樣,
我總覺得大部份人的設計不好用,
像box2d用void*,要取得自己的2d位置還要自己存一個指標指回去,
而且要加入新的物件一定要給它create,不能自己new。
我覺得都是指標了應該要可以給別人繼承取座標或快樂移動等,
不然要移動已經在box2d中創好的物件真的是超麻煩。
ann雖然程式庫都是用.cpp檔編譯,
可是接口全部是c-style的,不如寫成純c的程式庫更可以跨平台。
都是c-style根本就是要把所有座標資料copy出來給你算完再丟回去,
這樣怎麼real-time。
ogre如果要載入動態資料一定要用動態產生腳本再載入,
還有明明很多矩陣運算可以用SSE指令的,ogre也都沒有用,
明明都有平台預定義了......
而且還是樹狀結構,還不用gpu加速,
而且顯示系統已經沒更新很久了。
DXUT的ui是我覺得很好看的了,不過要只用它的ui,
真的是很難整合,還有DXUT的聲音interface真的爆難用的,
要多重播放還要給index,還不能重複......
一個好的程式庫用層次感來解釋
一.短時間要好上手
二.平常的效率很高
三.長時間運作沒有bug
留言列表