我在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更接近。 –