ダブルバッファリング

トップ / ソフト・ゲームを作るには / 知識とテクニック(中級編) / ダブルバッファリング

アニメーション

 まずは、アニメーションをさせる方法というのを簡単に考えていきます。

 アニメーションというのは、1/30秒などの短い時間ごとに、 次々と絵を変えていったり、動かしたりすることで、人間の目に動いて見えるようにするものです。

プログラムでは

 アニメーションをするプログラムの内部では、上の「1/30秒」のような短い時間ごとに、 新しい絵を描くことでアニメーションさせることが多いです。

ゲームのアニメーション

 アニメーションには2種類あります。 テレビアニメのように、はじめから内容が決まっているアニメーションと、 ゲームの画面のように、プレーヤーの操作によって、 あるいはリアルタイムに画面が変わっていくものがあります。

 ダブルバッファリングは主に、ゲームのようなアニメーションの時に使われます。

絵を合成する

 この2つのアニメーションの大きな違いは、テレビアニメは、はじめから絵が決まっていて、 その絵を順番に並べていくことでアニメーションさせるのに対し、 ゲームでは、その都度その都度、背景の絵を描きその上にアイテムやキャラクターなどを、 上から上から重ねて描いていくということです。

 要するに、「1/30秒」ごとに、 毎回たくさんの絵を合成してアニメーションさせるということです。

1つの問題点

 しかし、ある問題点がおこる場合があります。それは画面がちらつくということです。 (実行速度などの問題も起こりえますが、ここでは置いておきましょう!)

 どうしてちらつくのかと言うと、画面を何度も書き換えるからです。

 例を挙げて説明します。


 例えば、下のような絵を合成して絵を表示させるとします。

+ =

 この時、画面上には、背景を描いてから、その後にキャラクターを書き込みます。 この、「背景を描いてから、キャラクターを描くまでの短い時間」に背景だけが表示されることで、 キャラクターが点滅したりします。

 上書きして合成する絵が多くなればなるほど、完成した絵が表示されるまでの時間も長くなるので、 余計に乱れやすくなります。

 また、場合によっては最初に画面を全消去してから、絵を描くため、背景の表示も乱れます。

ダブルバッファリング

 ここでダブルバッファリングの登場です。

 上の場合に画面がちらついた理由、それは、画面上に何回も絵を描いているからです。 そこで、画面に見えないところで絵を合成して、完成品を画面に表示するのです。

 これが、ダブルバッファリングです。

表示されない画像

 画像というと、モニターに表示された画像だけしか思い浮かべないかもしれませんが、 実際には、表示されないけど存在する「画像のデータ」というものもあります。 そのような表示されていない画像に、新しい画像を上から重ねて、それを最後に画面上に表示します。

実際にやってみるには

 プログラミングの、言語・ソフトによって変わってきますが、 基本的には、画像を扱う「オブジェクト」や「クラス」を使うことで、 ダブルバッファリングができます。

 そのクラスやオブジェクトに、順番に絵を描いて合成していって、 最後にその画像を画面上に描画します。

 つまり、ゲームの背景画像などを一時保存しておいて、そこに上からキャラクターなどを書き込み、 その後に、その絵を実際の画面に書き出すということです。

最後に

 お読みいただきありがとうございました。

 「分かりにくい」などの意見がありましたら、 「掲示板」まで ご連絡いただけるとありがたいです。

トップ / ソフト・ゲームを作るには / 知識とテクニック(中級編) / ダブルバッファリング

トップページ

2006/2/23 更新