描画その2 |
はじめに
2Dもがんがれ!という事で、少し前のPCでも快適に遊べるような描画処理が書けるように実験。
32×32のブロックを横20、縦15個(640×480ドット)並べます。
これを1秒間で何回描画できるかという処理です。
ダウンロード:
DrawTest002.zip
解説
DirectDrawで描画してみました。
同じ条件という事でウィンドウモードで実施。ウィンドウモードで最も軽い方法かどうかはわかりませんが、システムメモリで確保し、エミュレーションモードで動作させるという方法をとりました。
また、1ドット単位で直接メモリ操作し、DIBの時と同じ条件にしています。この場合違いはバックサーフェスからプライマリサーフェスへの転送だけになるはず…
結果は以下の通り。
デスクトップPC:自作PC
(Pentium4
3.2GHz)、メモリ:PC3200、ビデオカード:GeForce6600GT、画面:32Bitモード
約230回
遅い!?
DirectDrawの使い方が悪いのでしょうか…
32Bitモード以外では正しく表示されないと思うのですが、それにしても…
DIBの方が速いですね。どうもBltが遅いようです。DirectDrawはLockが遅いと言われていますが、今回はシステムメモリに確保したので、毎回Lockする必要が無いので影響はありませんし。
ウィンドウモードだとBltFastも失敗するようで。
もっと違った方法があるのかもしれませんが、このままだとDirectDrawを使うメリットが無いなぁ…
という結果になりました。検証方法が問題なんでしょうかね。