DirectDrawの初期化&注意について

Back to Title Page(OpenLab)タイトルページへ戻る

最終更新日: 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 );
どちらを使用するかだけで、使用しない方をリマークにしているだけです。

DirectDraw関連

DDBase HEL  DirectDraw初期化 DirectDraw HELを使用
DDBase HAL  DirectDraw初期化 DirectDraw HALを使用

 

Copyright (C) Kitaro 1998