【发布时间】:2017-01-02 14:08:03
【问题描述】:
我正在寻找如何在 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
它有效,但对我来说似乎非常糟糕,所以我想知道是否有更好的方法来做到这一点。
【问题讨论】:
-
你为什么觉得它很糟糕?
-
因为像创建透明表面这样的事情应该由 api 正确处理,而不是用户必须使用条件编译和硬编码常量。
-
从外观上看,该代码与透明度没有太大关系。它更多地与数据的顺序有关。如,它是小端形式还是大端形式。
-
是的,但是你需要使用一个字节序相关的常量来制作一个透明的表面,我想知道是否有一种更“正确”的方法来做到这一点,它不需要像那样的幻数.
-
使用原始数据,所以很遗憾没有。可能有一种方法可以在这里创建一个优雅的解决方案,但它确实不是必需的。
标签: sdl