frostar@wiki

メニュー

作ったもの

過去の遺物
TRPG
プログラム
リンク

自分関係

ここのページへのリンクについてはこちら
TRPGのセッション記録とかメインのブログ
生配信チャンネル。プログラム<雑談
気が向いたときにやります
個人的な質問に答えてます。

TRPG系

お世話になっているオンラインセッションサイト
TRPGのことならここ!
IRCサーバなど、お世話になってます。
ネクロニカの支援サイトです。ツール開発やオンセもやっています。

プログラム系

初心者のためのプログラムのページ。WindowsSDKの方についても詳しく書いています。
windowsSDKのテクニックがいろいろ書いてあります。
C++STL(標準テンプレートライブラリ)の日本語版リファレンスです。


更新履歴

取得中です。


描画関数の時間比較


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

各描画系の関数について時間計測を行いました。
計測したのは以下の関数。
計測ではhdc1に画像を読み込み、それをhdc2に計測対象の関数で描画します。
読み込み時間などは計測の対象に入らず、あくまで関数自体の処理時間を計測します。
また、時間は100回描画した時の平均値で出しています。
画像はかえるさんを使いました。透過させるために一部青(RGB(0,0,255))で塗りつぶしてます。
Transparent系による透過は青(RGB(0,0,255))、半透明合成のアルファ値は128で固定。
BitBlt以外の拡大倍率とRotate系の回転角度は()の中の値です。
結果は以下のようになりました。
BitBlt:0.15
StretchBlt(2倍):3.34
TransparentBlt(等倍):0.20
TransparentBlt(1/2):3.74
AlphaBlend(等倍):0.20
AlphaBlend(1/3):3.08
TransparentAlphaBlt(等倍):0.74
TransparentAlphaBlt(3倍):6.90
RotateBlt(等倍、45度回転):31.06
RotateBlt(等倍、90度回転):28.57
RotateBlt(2倍、45度回転):23.58
RotateTransparentAlphaBlt(等倍、45度回転):33.40
RotateTransparentAlphaBlt(3倍、45度回転):21.89
起動時の状況などにかなり左右されるとは思いますが、RotateBltが他の描画系関数に比べるとかなり遅いことがわかります。
また、TransparentBlt、AlphaBlendは大きささえ変えなければBitBltとそれほど描画時間が変わらないこともわかります。また、拡大縮小の際にもStretchBltとはそれほど速度が変わりませんが、StretchBltではきれいな拡大縮小が行われないようなのでどちらかを使いましょう。
Rotate系で等倍よりも拡大したほうが時間早いのはなんでなんでしょうね?よくわかりません。