GDIPlus混合函數使用alpha乘以預產生的rgb通道來提高效率。然而,通過alpha進行預乘是非常昂貴的,因爲您必須逐個處理每個像素。有人有一個優化的函數預乘alpha位圖嗎?
它似乎是一個很好的候選人SSE大會。這裏有人想分享它的實施嗎?我知道這是艱苦的工作,所以這就是我問的原因。我不是想偷你的工作。如果可以的話,你可以全部考慮分享。
編輯:我不想通過軟件做alpha混合。我試圖用alpha來預乘圖像中每個像素的每個顏色分量。我這樣做是因爲alpha混合是由公式完成的:dst = src src.alpha + dst(1-dst.alpha)但是AlphaBlend Win32函數確實實現了dst = src + dst(1-dst.alpha )爲優化原因。爲了得到正確的結果,你需要在調用AlphaBlend之前使src等於src * src.alpha。
由於我對裝配知之甚少,所以我需要花一些時間才能寫出,所以我問是否有人想分享它的實現。 SSE會很好,因爲在這篇論文中,通過軟件進行alpha混合的收益是300%。
您應該嘗試GDI。您可以使用DIB(在內存中)預乘位圖alpha。它的速度非常快。 http://stackoverflow.com/questions/307348/how-to-draw-32-bit-alpha-channel-bitmaps – dns 2015-08-12 23:02:19