Chiharu の日記

絵描き C/C++ プログラマーの日記です。

Parallel force - パラレル・フォース 〜画面の更新について

昨日アップしたイメージ中の『WAITING FOR I-SU-CHI』の上方が少しズレています。これは画面を分割描画及び分割更新していることにより、前フレームと現フレームが混在してしまったものです。もしかすると遅い PC の場合、画面更新が垂直同期に追いつかないと、こうしたズレが目立つことがあるかもしれませんが、手元の Atom D330 で 17fps 程度の画面を見ていても気にならないので、多分問題ない範疇だと思ってます。そもそも V-RAM へのイメージ転送に GDI 使ってる時点で、垂直同期がどうのこうのとか、何言ってんだ状態ではあります。経験的に、バック バッファを用意して全画面転送しても、垂直同期に GDI 呼び出しが間に合わなければ、画面はズレます。この辺、GDI アクセラレーションが効いていた時代はドライバの実装に依存する動作だったのだと思います。ズレないドライバも存在したのでしょうが。そうだとすると私はグラボの当たりが悪かったのかな。
そんな訳で、ズレない実装には DirectDraw(DX8 以降の場合 DirectGraphics の 2D 部) の使用が欠かせませんが、以前も書いたように、周辺コードが一気に膨れ上がるため、面倒で対応する気がありません。ロストしたサーフェイスのリストアとか、バック バッファを表画面のサーフェイス フォーマットに合わせないといけないとか、転送ルーチンいくつ書かせるんだとか。DirectX もバージョンが上がってこの辺整備されているのかな。ま。気が向いたらやるかもしれませんが、まずは機能から。