2014-01-15 20 views
2

我想知道是否有人可以使用.c或.h圖像以及在gimp中導出的SDL。我知道有.xpm,但我無法以某種方式爲.xpm圖像啓用透明度。使用在SDL中使用gimp導出的.c/.h圖像

我知道在C中有一些複雜的方法來呈現.c/.h文件,但我寧願使用SDL,因爲我正在試着學習它。

提前致謝!

回答

2

瘸子頭導出功能,使用它自己的格式,提供用於uncrunch其宏,更多的細節here

您可以將原始數據緩存加載到使用SDL_CreateRGBSurfaceFrom

,只要你想加載圖片到SDL表面SDL,我可以建議你簡單地轉換圖片文件作爲一個C數組,而不是作爲原始圖片,但仍然爲bmp或png,

可以使用this tool任何二進制文件轉換成.H

這將提供你文件大小爲定義和一個指向文件緩衝區,

#define dataSize 93722 

unsigned char data[dataSize] = { 
    'B', 'M', 0x1A, 'n', 0x1, 0x0, 0x0, 0x0, 
    0x0, 0x0, 'z', 0x0, 0x0, 0x0, 'l', 0x0, 
... 
}; 

,因爲它是SDL您需要的緩衝區轉換爲SDL_RWops結構,

SDL_RWops * z = SDL_RWFromMem(data,dataSize); 

現在這種結構加載到你需要使用* _RW功能的新SDL表面,

如果普通使用經典的BMP文件,它直接支持SDL與SDL_LoadBMP_RW 相同THI NG存在sdl image對於所有支持的圖片類型,

SDL_Surface * titleScreen = SDL_LoadBMP_RW(z,1); 

用於定義一個SDL表面的透明色值,你可以使用SDL_SetColorKey功能

SDL_SetColorKey(titleScreen, SDL_SRCCOLORKEY, 10); 

如果你想有一個具體的例子,check this old source,它是uncrunch &從內存rar文件中加載幾個bmp圖片到sdl,

作爲原始數據或bmp不收斂您的可執行文件大小可以快速增長,mayb Ë看看upx可執行壓縮機,壓縮 整個exe將壓縮他的出貨數據量太大,位圖或生將被碾碎,但在你的程序

+0

我不知道怎麼感謝你夠本深入講解還是生的。如果只有我能夠......我肯定會+1。無論如何,非常感謝! – pepi55

相關問題