Platform SDK: DirectX |
ディスプレイ モードを設定するには、C++ の IDirectDraw7::SetDisplayMode メソッドまたは Visual Basic の DirectDraw7.SetDisplayMode メソッドを使用する。SetDisplayMode メソッドは、設定するモードのディメンジョン、ビット深度、およびリフレッシュ レートを記述する 4 つのパラメータを受け取る。このメソッドでは、5 番目のパラメータを用いて、与えられたモードに対する特別なオプションを示す。現在、オプションはモード 13 とモード X 320 × 200 × 8 ディスプレイ モードを区別するためだけに使用されている。
望ましいディスプレイ モードのビット深度を指定できるが、そのビット深度に対して使用するディスプレイ ハードウェアのピクセル フォーマットを指定することはできない。現在のビット深度に対して使用するディスプレイ ハードウェアの RGB ビットマスクを決めるには、ディスプレイ モードを設定してから IDirectDraw7::GetDisplayMode を呼び出す。現在のディスプレイ モードがパレット化でなければ、正確な赤、緑、および青のビットを決めるために、DDPIXELFORMAT の dwRBitMask、dwGBitMask、および dwBBitMask メンバのマスク値を調べることができる。詳細については、「ピクセル フォーマット マスク」を参照すること。
1 枚のディスプレイ カードをすべて共有しているかぎり、1 つ以上のアプリケーションでモードを変更できる。ディスプレイ モードのビット深度は、DirectDraw オブジェクトへの排他アクセスが取得できた場合にだけ、アプリケーションから変更できる。モードが変更されると、すべての DirectDrawSurface オブジェクトはサーフェス メモリを失い操作不能となる。サーフェスのメモリは、IDirectDrawSurface7::Restore メソッドを使うことで再割り当てしなくてはならない。
DirectDraw の排他 (フルスクリーン) モードでは、他のアプリケーションが DirectDrawSurface オブジェクトを割り当てられたり、DirectDraw や GDI 機能も利用可能となる。ただし、排他モード以外のアプリケーションがディスプレイ モードやパレットを変更することはできない。
注 : アプリケーション ウィンドウを作成したスレッドからは、IDirectDraw7::SetDisplayMod メソッドだけを呼び出せる。単一のスレッド化されたアプリケーション (大部分はそうである) に対しては、この制限は問題にならない。
望ましいディスプレイ モードのビット深度を指定できるが、そのビット深度に対して使用するディスプレイ ハードウェアのピクセル フォーマットを指定することはできない。現在のビット深度に対して使用するディスプレイ ハードウェアの RGB ビットマスクを決めるには、ディスプレイ モードを設定してから DirectDraw7.GetDisplayMode を呼び出す。現在のディスプレイ モードがパレット化でなければ、正確な赤、緑、および青のビットを決めるために、DDPIXELFORMAT の lRBitMask、lGBitMask、および lBBitMask メンバのマスク値を調べることができる。詳細については、「ピクセル フォーマット マスク」を参照すること。
1 枚のディスプレイ カードをすべて共有しているかぎり、1 つ以上のアプリケーションでモードを変更できる。ディスプレイ モードのビット深度は、DirectDraw オブジェクトへの排他アクセスが取得できた場合にだけ、アプリケーションから変更できる。モードが変更されると、すべての DirectDrawSurface オブジェクトはサーフェス メモリを失い操作不能となる。サーフェスのメモリは、DirectDrawSurface7.Restore メソッドを使うことで再割り当てしなくてはならない。
DirectDraw の排他 (フルスクリーン) モードでは、他のアプリケーションが DirectDrawSurface オブジェクトを割り当てられたり、DirectDraw や GDI 機能も利用可能となる。ただし、排他モード以外のアプリケーションがディスプレイ モードやパレットを変更することはできない。