OpenGL載入DDS壓縮紋理

2021-05-25 04:36:25 字數 1390 閱讀 7681

網路上的影象庫很多,如

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...