我在弄清楚这种图像格式的含义时遇到了一些麻烦:DirectX中的B8G8R8A8_UNorm。这是每个颜色通道8位?这是否意味着如果您的颜色为0xAABBCCFF,那么颜色将为:
,这是某种灰色?例如,这与R32G32B32A32_float相比如何?
例如。我正在查看HxD中的图像,以查看十六进制。前8个字节(在头部之后)是:
FB 52 6F 3F
哪个是绿色的。但是,如果我将图片加载到Gimp中,并查看像素,则像素为粉红色(#FFF8B5B5 => ARGB)。所以即使是一个颜色通道也不一样!
怎么会这样? B8G8R8A8_UNorm究竟是什么意思?我怎样才能将其放入与普通图像处理程序相同的格式? (即,对于该示例,R = F8,G = B5,B = b5,A = FF)
答案 0 :(得分:2)
不,你是以错误的顺序看着它。它是:
8-bit Blue, 8-bit Green, 8-Bit Red, 8-bit Alpha.
你会反过来得到:
3F 6F 52 FB
^A ^R ^G ^B
在C#中:
Color c = Color.FromArgb(0x6F, 0x52, 0xFB); // Pink.
^R ^G ^B
这导致#FF6F52FB,这也与Gimp不同。我将假设UNorm
标志对此进行微调。也许它会略微减轻它。
它不是完全粉红色......而是一种奇怪的粉红色。