網路上的影象庫很多,如
freeimage
、devil
等,庫很強大且支援多種格式,當然也包括
dds紋理。例如
freeimage
,但是它這裡所說的支援
dds格式是指將壓縮格式的資料重新解壓成
rgba
畫素資料,將資料解壓後再繫結到
opengl
中就失去了其作為壓縮紋理的高效性(因
opengl
直接支援此壓縮紋理資料)。
freeimage
作者建議參考
ogre
的dds
紋理載入實現,但那部分實現與
ogre
切合太緊不便
ogre
之外應用,需要的是乙個方便的壓縮紋理繫結函式。多方查詢後發現
nvidia
的乙個小類庫
nv_dds
挺好用的,就把它封裝了一下,附上原始碼 (可根據實際需要擴充功能)。
/** dds
紋理繫結函式
* @param[in] filepath
紋理路徑
* @param[out] texid
紋理id
* @return
資料資訊
* - 0
開啟失敗
* - 1 rgb格式
* - 2 rgba格式
*/
unsigned
builddds (char *filepath , unsigned &texid )
glgentextures (1, &texid );
glenable (gl_texture_2d );
glbindtexture (gl_texture_2d , texid );
glcompressedteximage2d (gl_texture_2d , 0, image .get_format (),
image .get_width (), image .get_height (), 0, image .get_size (), image );
for (int
i = 0; i
< image .get_num_mipmaps (); i ++)
return
image .get_components () < 4 ? 1 : 2;
} 原始碼中使用到了
glext.h
標頭檔案、
glut
和glew
兩個opengl
相關庫,需自行新增到
vc2010
的相關目錄中,同時將
dds紋理置於
c盤或自行修改路徑。
OpenGL載入紋理深入詳解。
opengl進行紋理對映的基本流程 1,首先要開啟紋理對映的功能。glenable gl texture 2d 2,載入位圖資源。3,將位圖資源轉化成紋理。4,釋放位圖資源。5,使用紋理,繪圖。閒話不多說,直接上 這裡插一句,在opengl裡面,申明乙個紋理 位圖轉化成紋理 需要三個步驟 1,首先我...
學習筆記 15 OpenGL 壓縮紋理
立即學習 opgl壓縮文理 好處 1.傳輸效率很高因為壓縮率很大,壓縮後記憶體降低了6倍或12倍。2.這個格式是由硬體支撐的,它在繪製時候效率非常高。opgl es的壓縮紋理有常見的如下幾種實現 1.etc1 ericsson texture compression 2.pvrtc powervr ...
wp8下壓縮紋理的使用(dds)
個人認為,既然手機裝置支援wp8支援dx11,那麼dds的壓縮紋理必然是被支援的。不過依然不保證完全如此。希望看此文章的同仁留意。微軟wp系統在記憶體管理上有乙個不同於ios和android的地方,那就是給程式預先分配的記憶體是有限的。正常情況是150mb,通過設定一些標誌可以允許180mb或者30...