我在Direct2D中绘制位图。位图使用透明度(alpha通道)。Direct2D - 如何用位图做伽马校正透明(alpha)
混合看起来不对。
作为一项测试,我加载了50%透明度的纯黑色PNG图像,并将其绘制在白色背景上。结果是红色,绿色和蓝色值为127(0x7F7F7F)的像素。这表明Direct2D的融合忽略了伽玛,并将色彩值视为线性。
(位图使用常规sRGB色彩空间,每像素32位,红色,绿色,蓝色和Alpha各8位)。它们以GUID_WICPixelFormat32bppPBGRA格式加载。
在sRGB中,黑白之间的混合是186(0xBABABA)。这是我想要的理想结果。
Direct2D可以显示透明度吗?我会怎么做?任何帮助赞赏。
我想你已经倒退了。在sRGB中,50%会看起来像黑色和白色之间的中途(亮度,挺)。它看起来太亮还是太暗?这可能是由于它显示的方式。 –
我的理解是sRGB色彩空间定义了像素强度与实际存储数之间的非线性转换。即伽玛曲线。 例如,一个8位颜色值的范围为0-255,但由于伽马曲线的原因,在大约20%的亮度下显示值127(半途)。 因此,伽玛校正50%黑白混合的像素值应为186(满量程的73%)。所以在Direct2d中,我的混合看起来太黑了。 –
@astraycat如果您查看交替的黑白像素并将它们与固体块进行比较,则BABABA块在正确校准的显示器上应该具有相同的亮度。即使在未校准的显示器上,BABABA也应该比7F7F7F更接近。 –