我已经了解了RGBA的工作机制,所以我意识到属于不同颜色的十六进制数可以变成简单的整数。这意味着我可以将颜色存储在整数中,即使其中一些非常大。
我的问题是如何获得属于我给程序的整数的颜色?
编辑:当然我忘了提到我也使用 Allegro 但我是新手……有什么功能可以做到吗?
如果您将颜色存储为整数,听起来您正在使用 Allegro 4。它提供了多种功能供您使用,只需查看手册即可。
// int makecol(int r, int g, int b);
int white = makecol(255, 255, 255);
int green = makecol(0, 255, 0);
或者反过来:
int r = getr(color);
int g = getg(color);
int b = getb(color);
对于 Allegro 4,排序取决于显卡。因此,相同颜色的返回值makecol()
可能不同,具体取决于它存储的是 RGB 还是 BGR。所以你必须使用上面的函数来获得正确的颜色值,并且只有在设置图形模式之后。
如果使用 Allegro 5(我强烈推荐它而不是 Allegro 4),则使用ALLEGRO_COLOR
隐藏底层实现细节的结构,因此以上都不适用。