SDL 创建透明表面

whe*_*ags 6 sdl

我正在寻找如何在 SDL 中创建透明表面,我发现了以下内容:http ://samatkins.co.uk/blog/2012/04/25/sdl-blitting-to-transparent-surfaces/

基本上,它是:

SDL_Surface* surface;
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
surface = SDL_CreateRGBSurface(SDL_HWSURFACE,width,height,32, 0xFF000000, 0x00FF0000,        0x0000FF00, 0x000000FF);
#else
surface = SDL_CreateRGBSurface(SDL_HWSURFACE,width,height,32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
#endif
Run Code Online (Sandbox Code Playgroud)

它确实有效,但对我来说似乎非常糟糕,所以我想知道是否有更好的方法来做到这一点。

Cap*_*awk 1

您所要做的就是检查计算机是否使用大端序或小端序。SDL 是多平台的,计算机使用不同的字节序。

该文章的作者以“平台无关”的方式撰写该文章。如果您在 PC 上运行此程序,则只需使用以下内容就可能是安全的:

surface = SDL_CreateRGBSurface(SDL_HWSURFACE,width,height,32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
Run Code Online (Sandbox Code Playgroud)

你不需要条件。

话虽这么说,代码将无法移植到使用大尾数的其他平台