DirectXで遊ぼう | 上のページ |
- 概要
DirectDrawの本命とも言うべき、実際の描画を行うオブジェクトです。
これが理解できれば、DirectDrawのほとんどをマスターしたと言っても過言では無いでしょう。
以下の内容について解説します。
- プライマリサーフェイスって何?
実際にウィンドゥに反映するオブジェクトを差します。 グラフィックを表示するには、このオブジェクトに対して操作を行ってやる必要があります。
DirectX関数だけでなく従来のGDI関数を使用する事ができるので、今まで培ってきたノウハウを無駄にする事もありません。
- サンプルプログラム
IDirectDrawオブジェクトからサーフェイスを生成する方法です。
IDirectDrawの説明で使用した、ddrawから呼び出す事を前提としています。
LPDIRECTDRAWSURFACE ddsurface; // IDirectDrawSurfaceのポインタ DDSURFACEDESC dds; // CreateSurfaceに渡す構造体 HRESULT r; // 関数の返値 ZeroMemory(&dds,sizeof(DDSURFACEDESC)); dds.dwSize = sizeof(DDSURFACEDESC); dds.dwFlags = DDSD_DDSCAPS; dds.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; r = ddraw->CreateSurface(&dds,&ddsurface,NULL); if(r != DD_OK){ // // CreateSurface失敗(r:エラーコード) // }- 生成に用いる構造体
DDSURFACEDESC構造体に、サーフェイスを生成するための情報を設定する必要があります。
しかし、プライマリサーフェイスを生成するには以下の情報だけで十分です。
- dwSize
DDSURFACEDESC構造体の大きさを格納します。
- dwFlags
DDSURFACEDESC構造体中にあるデータ中において、有効にするデータをフラグで設定します。
ここではddsCapsの値を有効にするために、DDSD_DDSCAPSを与えてやります。
- ddsCaps
サーフェイスの属性を設定します。
ここではプライマリサーフェイスを生成するという事を宣言(DDSCAPS_PRIMARYSURFACE)しています。
- オブジェクトの開放
IDirectDrawSurfaceは、プログラム終了時には開放しなければなりません。
ddsurface->Release();
上のページ |