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

标签 c# c++ unity3d freeimage

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

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

最佳答案

你有两个选择,你可以:

  1. 重新编译 FreeimageFREEIMAGE_COLORORDER设置为 FREEIMAGE_COLORORDER_RGB值 (1)。然后你加载的图像将始终在 RGBA32 中格式。如果这个FREEIMAGE_COLORORDER未在编译时指定,实际颜色顺序设置由目标系统的字节顺序确定。

  2. 使用 Freeimage SwapRedBlue32BGRA32 转换加载图像的函数至 RGBA32格式。

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

关于c# - 使用 FreeImage 是否可以在 ARGB32 或 RGBA32 而不是 BGRA32 中输出 ConvertToRawBits?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080660/

相关文章:

c++ - boost::asio::async_read 在不满足完成条件的情况下结束

c++ - 结果中看不到析构函数更改的全局变量

c++ - 在Base 10 C++中显示1024位二进制数

c# - 是否可以在方法内部运行函数?

c# - 如何在不使用 transform.Rotate 的情况下在其本地或世界轴上旋转具有第二个四元数的四元数?

c# - XML 反序列化内部异常

c# - 实现即发即忘异步方法调用的正确方法

unity3d - 如何在 Unity 中将表面着色器转换为顶点/片段代码?

c# - 使用 ConcurrentBags

c# - 如何忽略字符串日期时间的偏移量