最終更新日: 1998年 08月 03日 月曜日
DirectDrawの初期化&チェックプログラムの基本をWin32ベースで作成して
みました。この段階で、DirectDraw HAL/HELのどちらを使用するかを指定
もしくは判断します。VisualC w/MFCで作成する時にはHALの使用ができなく
なるためDirectDraw HELの使用に限定されます。始めのうちはHELで作成し
ておき、最終デバッグなどでHALに変更するのが簡単だと思われます。
Microsoft Visual C 5.0(4.0) | Professional/Enterprize版 |
DirectX SDK | Dx3SDK もしくはDX5SDK、現在米国マイクロソフトの サイト ではDirectX6SDKのCDRomが配布されています。 |
・DirectDraw HAL | HALはDirectDrawをハードウェア機能で使用するため高速な描画が可能 です。ただし、HALで使用する場合は基本として動作レベルは排他モードで使用しなくては ならず、フルウィンドゥのみのサポートとなるため、高速性・機能性を生かす代償としてプロ グラムの作成のし辛さなどがあります。 |
・DirectDraw HEL | HELはソフトウェアでHALの機能をエミュレーションするため低速ながら安定した
プログラムを作成できます。基本としてWindowsモードで動作し、他のWindowsと
協調し(排他モードで動作させない)動作するためWindowsGDIからの移行段階として
はたやすくプログラムが作成可能です。 デメリットとしては、速度の低下、αブレンドが使用エミュレーションのみでは対応しない等 (対応ハードウェア&デバイスドライバーが必要) の機能制限、ビデオメモリーを使用したフリップ(プライマリー・バックサーフェイスの作成)の使用ができないことなどが あげられます。そのため、プログラムには若干のテクニックが必要になります。ただ、GDIと すら共存できる(あまり推奨されない)ので開発段階としては十分にチェックを行うなどが可能 です。 |
上記のように簡単ですがプログラム作成上の特徴を述べましたが、あまりに省略した部分が多い
ため実際にどうなるのかは自分の目で確かめてください。
HAL/HELの違いは一行のみでどちらも初期化段階の
ddrval = lpDD->SetCooperativeLevel(hwnd, DDSCL_NORMAL);
ddrval = lpDD->SetCooperativeLevel(hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
どちらを使用するかだけで、使用しない方をリマークにしているだけです。
DDBase HEL | DirectDraw初期化 DirectDraw HELを使用 |
DDBase HAL | DirectDraw初期化 DirectDraw HALを使用 |
Copyright (C) Kitaro 1998