【C++】GDI描画によるマップのスムーズスクロール

画面をスクロールするロジック。

それにはさまざまな実装方法がありうる。

MSXの時代を経験している俺にとっては、とても感慨深い問題である。

そう、MSXはスムーズなスクロールが苦手とされていた。

それはさておき、動画をペタリ。

当たり判定処理はまだ入れていない。

見ておわかりかも知れないが、とりあえず採用した方式は、ビットマップで構築したバックバッファを画面に送信する際に、送信先の座標を少しづつずらす、という方式。

1枡分ずらし終わったら、ずらす量を0に戻して、今度は描くマスの開始位置をインクリメント(デクリメント)するというもの。

プレイヤーキャラクターがぴょんぴょんはねてるような動きをしているのは、マップとプレイヤーキャラを同じバックバッファに描いた後でスクロールさせているから。

この問題の改善案は、マップを流し込んだビットマップを別に用意して、それをバックバッファにずらして流す。

その後、プレイヤーキャラクターをバックバッファに流す。

ただ、この方法の問題は、いわゆる背景の描画とキャラクターの描画というふうに描画パスが二分されてしまうこと。

メモリも背景用に余分に必要になる。

ファミコン時代の人たちは、どうやってスクロールさせてきたんだろう。

きっと、いろんな工夫があって面白いはずである。

ちなみに画面の左上にフレームレートを出力しておいた。

GDIで描画すると、文字列の描画が楽でいいね。

4年前

コメントを残す

メールアドレスが公開されることはありません。