GDIPlus ブレンド関数は、効率を高めるためにアルファ ビットマップで事前に乗算された RGB チャネルを使用します。ただし、アルファによる事前乗算は、各ピクセルを 1 つずつ処理する必要があるため、非常にコストがかかります。
SSEの組み立ての有力候補になりそうです。その実装を共有したい人がここにいますか? これが大変な作業であることを知っているので、それが私が尋ねる理由です。あなたの作品を盗もうとしているわけではありません。可能であれば、これを共有するためのすべての考慮事項を取得します。
編集:ソフトウェアでアルファブレンディングをしようとしているわけではありません。画像内の各ピクセルの各色成分をアルファで事前に乗算しようとしています。アルファ ブレンドは次の式で行われるため、これを行っています: dst=src src.alpha+dst (1-dst.alpha) ただし、AlphaBlend Win32 関数は dst=src+dst(1-dst.alpha) を実装します。最適化の理由。正しい結果を得るには、AlphaBlend を呼び出す前に src を src*src.alpha と等しくする必要があります。
私はアセンブリについてほとんど知らないので、書くのに少し時間がかかるので、誰かがその実装を共有したいかどうか尋ねていました. ソフトウェアによるアルファブレンディングのゲインは300%であるため、SSEは素晴らしいでしょう。