1

単純なforループを使用してpacmanを一列に移動していますが、pacmanが点滅するか、画面全体が更新されて点滅している可能性があります。どうすればもっとスムーズにできますか?

編集:

現在、C++Turboとその組み込みのグラフィックライブラリを使用しています。しかし、後でSDLを使用する傾向があります(2D配列(グリッド)上の画像タイルを使用)。

4

1 に答える 1

4

フレーム間のスムーズな移行に使用できるテクニックはたくさんあります。おそらく最も単純なのは、フレームの構築が表示可能なビデオメモリの外部で行われ、メモリのブロック全体が新しいフレームの場所に切り替えられるダブルバッファリングです(通常はページめくり、高速ハードウェア切り替え、さらにはフレームの作成)非ビデオメモリでは、1回の高速操作でビデオメモリに「ブリット」することが有利な場合があります)。

この方法を使用すると、どの時点でもハーフビルドのフレームが表示されないため、遷移がはるかにスムーズに見える可能性があります。これは、ハードウェアフレーム間で切り替えが行われる場合に特に当てはまります(少なくとも古いCRTモニターでは、新しいモニターに垂直および水平リトレースの概念があるかどうかは実際にはわかりません)。

もう1つの方法は、フレームあたりの計算コストを低く抑えることです。例としては、PacManのトンネルラインを非ビデオメモリに1回だけ描​​画するため、比較的高速に「ブリット」することができます(変更されないため)。言い換えると、フレームの構築は次の要素で構成されます。

  • 決して変わらないトンネルの壁をコピーします。
  • めったに変更されないドットをコピーします。
  • かなり頻繁に変わる文字を描く。

これにより、プロセスがかなりスピードアップします。このトリックをルックダウンスペースシューティングゲームで使用して、より深いフレームの移動も遅くし、視差効果を与えました。

于 2010-12-27T12:19:12.717 に答える