0

我很难弄清楚这种图像格式的含义:directX 中的 B8G8R8A8_UNorm。这是每个颜色通道 8 位吗?这是否意味着如果您有颜色 0xAABBCCFF,例如,那么颜色将是:

  • B = AA
  • G = BB
  • R = CC
  • A = DD

,这是某种灰色?例如,这与 R32G32B32A32_float 相比如何?

例如。我正在查看 HxD 中的图像,以查看十六进制。前 8 个字节(在头部之后)是:

FB 52 6F 3F

哪个是绿色的。但是,如果我将图片加载到 Gimp 中,然后查看像素,该像素是粉红色的(#FFF8B5B5 => ARGB)。所以甚至没有一个颜色通道是相同的!

这怎么可能?B8G8R8A8_UNorm 到底是什么意思?我怎样才能把它变成与普通图像处理程序使用的格式相同的格式?(即,本例中的 R = F8、G = B5、B = b5、A = FF)

4

1 回答 1

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标志对此进行了微小的调整。也许它会稍微减轻它。

它不是完全粉红色的……而是一种奇怪的粉红色。

于 2013-01-31T01:32:43.203 回答