使用 FreeImage 是否可以在 ARGB32 或 RGBA32 而不是 BGRA32 中输出 ConvertToRawBits?

With FreeImage is it possible to have ConvertToRawBits output in ARGB32 or RGBA32 rather than BGRA32?

我正在加载 PNG 以用作 Unity 中的纹理。当我使用 ConvertToRawBits() 时,它输出到 BGRA32。是否可以改为输出为 ARGB32 或 RGBA32?

https://gist.github.com/ciwolsey/24635ea523b4a6b758783688be53bf86

你有两个选择,你可以:

  1. 重新编译 Freeimage 并将 FREEIMAGE_COLORORDER 设置为 FREEIMAGE_COLORORDER_RGB 值 (1)。那么您加载的图像将始终为 RGBA32 格式。如果这个 FREEIMAGE_COLORORDER 在编译时没有指定,实际的颜色顺序设置由目标系统的字节顺序决定。

  2. 使用FreeimageSwapRedBlue32函数将加载的图像从BGRA32格式转换为RGBA32格式。

Here 是关于这个主题的很好的讨论。