gpt4 book ai didi

c - 在 SDL 中使用通过 gimp 导出的 .c/.h 图像

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:27 25 4
gpt4 key购买 nike

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

我知道有一些复杂的方法可以在 C 中呈现 .c/.h 文件,但我宁愿使用 SDL,因为我正在尝试学习它。

提前致谢!

最佳答案

gimp header export function 使用它自己的格式,提供一个宏来解开它,更多细节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);

现在要将此结构加载到新的 sdl 表面,您需要使用 *_RW 函数,

如果您打算使用经典的 bmp 文件,它在 sdl 中直接支持 SDL_LoadBMP_RW同样的东西存在于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 未被压缩,您的可执行文件大小可能会快速增长,也许看看 upx可执行压缩器,压缩整个 exe 也会压缩他传送的数据,位图或原始数据将被压缩但在你的程序中仍然是原始的

关于c - 在 SDL 中使用通过 gimp 导出的 .c/.h 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com