2005/10/24(Mon)MMXでアルファブレンド習作

はてブ数 2005/10/24 12:50 計算機な日記::ソフト作り つーさ

MMXを用いて 24bppのDIBを24bppのブレンド率マスク画像に従って
24bppのDIBとアルファブレンディングしてみる。

ってか今頃MMXなんて遅すぎるよな。
今頃だから互換性を気にせずにMMX使えるんだけど。
CPUID使って切り分けてもいいけど、さすがにi486は未サポートでいい気がする。
そもそも普通フリーウェアなんて自分のために作るものであって。

で、余談だけど。。
HSPが3になっても結局DIBは24bitのままなのだけど、
DIBは32bppで扱った方がいいんじゃないかなぁ、と思う次第。
確かにメモリ余計に食うデメリットはあっても
メリットの方が大きいと思うんだがにゃー。

MMXを使ったアルファブレンドでもそう。
24bit区切りのデータをQWORDごと処理しようとすると、
Xサイズを8px単位にしないといかんし……。
32bit区切りならXサイズは2px単位でいいし、
プログラムからはとても扱いやすそうな気がするんだけど。
DWORDずつ処理するのなら、24bppでは4px、32bppでは1px単位。
まぁ、人様のライブラリを使わせて頂く以上、文句言っても仕方ないのだけど。

使用式が (src*msk+dst*(255-msk))>>8 だから元画像よりちと暗くなる。
ブレンド率0%を255回繰り返すと真っ黒けになる悪寒w
でもね、でもね。動きのあるシーンならばれないと思うよw
光の処理はほんわかさんの方が綺麗、らしいことをどこかで聞いた。
AddBlendやらSubBlendもMMX使えば結構楽勝ぽ。

以下ソース。

続きを読む