【发布时间】:2010-10-20 01:47:56
【问题描述】:
GDIPlus 混合函数使用通过 alpha 位图预乘 rgb 通道来提高效率。然而,通过 alpha 进行预乘是非常昂贵的,因为您必须逐个处理每个像素。
它似乎是 SSE 组装的不错选择。这里有人想分享它的实现吗?我知道这是一项艰苦的工作,所以这就是我问的原因。我不是想偷你的工作。如果可以的话,你会得到我所有的考虑来分享这个。
编辑:我不想通过软件进行 alpha 混合。我正在尝试将图像中每个像素的每个颜色分量与其 alpha 预乘。我这样做是因为 alpha 混合是通过以下公式完成的:dst=srcsrc.alpha+dst(1-dst.alpha) 但是 AlphaBlend Win32 函数确实实现了 dst=src+dst( 1-dst.alpha) 出于优化原因。要获得正确的结果,您需要在调用 AlphaBlend 之前 src 等于 src*src.alpha。
由于我对汇编知之甚少,所以我要花一些时间来写,所以我想问是否有人愿意分享它的实现。 SSE 会很棒,因为在论文中通过软件进行 alpha 混合的增益是 300%。
【问题讨论】:
-
你应该试试 GDI。您可以使用 DIB(在内存中)预乘位图 alpha。它燃烧得很快。 stackoverflow.com/questions/307348/…
标签: c++ winapi gdi+ alphablending