第1章 基礎知識

1-3.Direct Drawで行われること

(a) ビデオメモリの使い方

ビデオメモリ上に画面表示用の領域を作成し、そこに画像を転送すればディスプレイ上に画像が表示される。しかしこの方法では描いている(転送している)途中の状態が見えてしまうため、ゲームには向かない。
そこで、画面表示用の領域を二枚用意し、片方の領域を表示している間、見えないほうの領域に画像を転送し、転送が終わったら領域を切り替えることにより、画面のちらつきをなくすことができる。この手法をダブル・バッファリングと呼ぶ。
DrectDrawにはフリップという機能があり、見えるサーフェイス(ビデオメモリ上の指定した領域)と見えないサーフェイスの切り替えを高速に行うことができる(アドレスを変えるだけ)。

《POINT》

画面表示用の領域はプライマリ・サーフェイスとバック・サーフェイスの2画面分必要である。

※参考書ではバック・サーフェイスバックバッファと書かれていることが多いが同じ意味である。本校ではバック・サーフェイスと呼んでいる。

(b) DirectDrawでできること

DirectDrawはビデオ・カードをコントロールし、画像を表示したり管理したりするためのインターフェースを提供するAPI郡である。
CやDelphi、Visual Basicなどから呼び出して使用できる。 主な機能は次のとおり。

1.画面モードの制御
DirectDrawによって、ビデオ・カードが表示できる任意の解像度に切り替えることができる。画面の解像度はサイズと色数の組み合わせで640×480の256色モード、800×600の6万5千色モードなどのようにビデオ・カードがサポートしているモードに変更できる。また、リフレッシュレートも選べる。
2.ビデオ・カードの占有
DirectDrawは任意の解像度において、画面全体をアプリケーションに占有させてほかのアプリケーションが画面に書き込むことができないようにすることができる。これによってアプリケーションは独占的に画面を占有でき、他のアプリケーションなどに画面上に何かを表示されることもなく、処理も高速に行うことができる。
3.高速な画像のブロック転送
DirectDrawは画像を扱えるとはいっても、Win32APIのGDI関数やOpenGLのように線を引いたり円を描いたりといったいろいろな描画機能はない。DirectDrawは画像のブロック転送のみをサポートしている。
ブロック転送のための画像は、ビデオ・カードのメモリ(VRAM)上や、通常のメモリ上にビットマップのような形で置くことができ、そこから画面に高速に転送する。このとき、透明色を透かしたり、拡大縮小や反転などの効果を与えることもできる。
4.パレットの管理
256色以下の表示できる環境で、画面に表示するためのパレットを管理する。画面のパレットを直接操作することができ、パレット・アニメーションのような効果を得ることができる。
5.画面フリップ
DirectDrawでは、画面表示にダブル・バッファリングをするときに表示を切り替える処理を高速に行うための画面フリップ機能が使える。フリップでは画像の転送は行われないため、ちらつきのない表示を高速に行うことができる。
6.ビデオ・メモリへの直接アクセス
画像のビデオ・メモリに直接アクセスして、色を書き込んだり読み込んだりすることができる。
7.オーバレイ表示
常に画面の一番上に表示されるようなオーバレイを表示できる。通常は、ビデオなどを再生して表示するために使われる。

[ TOP ] [ Next ]