使用SDL中使用gimp导出的.c/.h图像



我想知道是否有人知道在gimp中导出SDL时是否可以使用.c或.h图像。我知道有.xpm,但我无法以某种方式为.xpm图像启用透明度。

我知道用c语言渲染.c/.h文件有一些复杂的方法,但我更愿意使用SDL,因为我正在努力学习它

提前感谢!

gimp头导出函数使用自己的格式,提供了一个用于取消绑定的宏,更多详细信息请点击

可以使用sdl_CreateRGBSurfaceFrom 将原始数据缓冲区加载到sdl曲面中

如果你想将图片加载到sdl中,我可以建议你简单地将图片文件转换为C数组,而不是原始图片,而是bmp或png,

您可以使用此工具将任何二进制文件转换为.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);

现在,为了将这个结构加载到一个新的sdl曲面中,您需要使用*_RW函数,

如果您喜欢使用经典的bmp文件,则在带有sdl_LoadBMP_RW的sdl中直接支持它对于所有支持的图片类型,在sdl图像中都存在相同的东西,

SDL_Surface * titleScreen = SDL_LoadBMP_RW(z,1);

要定义sdl曲面的透明颜色值,可以使用sdl_SetColorKey函数

SDL_SetColorKey( titleScreen, SDL_SRCCOLORKEY, 10);

如果你想要一个具体的例子,请检查这个旧的源代码,它是unclock&将多张bmp图片从内存中的rar文件加载到sdl中

由于原始数据或bmp没有经过处理,您的可执行文件大小可能会快速增长,也许可以看看upx可执行压缩程序,压缩整个exe也会压缩他发送的数据,位图或原始数据会被处理,但在你的程序中仍然是原始的

最新更新