ダブルバッファリングアニメーションまずは、アニメーションをさせる方法というのを簡単に考えていきます。 アニメーションというのは、1/30秒などの短い時間ごとに、 次々と絵を変えていったり、動かしたりすることで、人間の目に動いて見えるようにするものです。 プログラムではアニメーションをするプログラムの内部では、上の「1/30秒」のような短い時間ごとに、 新しい絵を描くことでアニメーションさせることが多いです。 |
ゲームのアニメーションアニメーションには2種類あります。 テレビアニメのように、はじめから内容が決まっているアニメーションと、 ゲームの画面のように、プレーヤーの操作によって、 あるいはリアルタイムに画面が変わっていくものがあります。 ダブルバッファリングは主に、ゲームのようなアニメーションの時に使われます。 絵を合成するこの2つのアニメーションの大きな違いは、テレビアニメは、はじめから絵が決まっていて、 その絵を順番に並べていくことでアニメーションさせるのに対し、 ゲームでは、その都度その都度、背景の絵を描きその上にアイテムやキャラクターなどを、 上から上から重ねて描いていくということです。 要するに、「1/30秒」ごとに、 毎回たくさんの絵を合成してアニメーションさせるということです。 |
1つの問題点しかし、ある問題点がおこる場合があります。それは画面がちらつくということです。 (実行速度などの問題も起こりえますが、ここでは置いておきましょう!) どうしてちらつくのかと言うと、画面を何度も書き換えるからです。 例を挙げて説明します。 例えば、下のような絵を合成して絵を表示させるとします。 |
![]() | + | ![]() | = | ![]() |
この時、画面上には、背景を描いてから、その後にキャラクターを書き込みます。 この、「背景を描いてから、キャラクターを描くまでの短い時間」に背景だけが表示されることで、 キャラクターが点滅したりします。 上書きして合成する絵が多くなればなるほど、完成した絵が表示されるまでの時間も長くなるので、 余計に乱れやすくなります。 また、場合によっては最初に画面を全消去してから、絵を描くため、背景の表示も乱れます。 ダブルバッファリングここでダブルバッファリングの登場です。 上の場合に画面がちらついた理由、それは、画面上に何回も絵を描いているからです。 そこで、画面に見えないところで絵を合成して、完成品を画面に表示するのです。 これが、ダブルバッファリングです。 表示されない画像画像というと、モニターに表示された画像だけしか思い浮かべないかもしれませんが、 実際には、表示されないけど存在する「画像のデータ」というものもあります。 そのような表示されていない画像に、新しい画像を上から重ねて、それを最後に画面上に表示します。 実際にやってみるにはプログラミングの、言語・ソフトによって変わってきますが、 基本的には、画像を扱う「オブジェクト」や「クラス」を使うことで、 ダブルバッファリングができます。 そのクラスやオブジェクトに、順番に絵を描いて合成していって、 最後にその画像を画面上に描画します。 つまり、ゲームの背景画像などを一時保存しておいて、そこに上からキャラクターなどを書き込み、 その後に、その絵を実際の画面に書き出すということです。 |
最後にお読みいただきありがとうございました。 「分かりにくい」などの意見がありましたら、 「掲示板」まで ご連絡いただけるとありがたいです。
2006/2/23 更新 |