Platform SDK: DirectX |
キューブ環境マップを作成するには、C++ の場合は IDirectDraw7::CreateSurface メソッドを、Visual Basic の場合は DirectDraw7.CreateSurface を呼び出す。キューブ マップは複合サーフェスである。つまり、キューブ マップはアタッチされたサーフェスのセットであり、1 回の呼び出しで DirectDraw によって作成される。個別に作成されたサーフェスは、互いにアタッチしてキューブ環境マップを作成することはできない。キューブ環境マップ テクスチャは矩形でなければならず、その大きさは 2 の累乗である。
次のコードは、C++ アプリケーションで単純なキューブ環境マップを作成する方法を示す。
// この例では、pDD 変数は IDirectDraw7 インターフェイスへの // 有効なポインタである。 DDSURFACEDESC2 ddsd; ZeroMemory((LPVOID)&ddsd, sizeof(DDSURFACEDESC2)); ddsd.dwSize = sizeof(DDSURFACEDESC2); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; ddsd.ddsCaps.dwCaps = DDSCAPS_TEXTURE; // ピクセル フォーマットを有効なテクスチャ フォーマットに設定する。 // 大きさは任意に指定できるが、2 の累乗でなければならない。 ddsd.dwWidth = 64; ddsd.dwHeight = 64; // 有効なレンダリング ターゲット サーフェスである、システム メモリのキューブ マップ テクスチャの // 能力を設定する。 ddsd.ddsCaps.dwCaps = DDSCAPS_COMPLEX | DDSCAPS_3DDEVICE | DDSCAPS_TEXTURE; ddsd.ddsCaps.dwCaps2 = DDSCAPS2_CUBEMAP|DDSCAPS2_CUBEMAP_ALLFACES; LPDIRECTDRAWSURFACE7 pddsCubeMap; // キューブ マップを作成する。 if( FAILED( pDD->CreateSurface( &ddsd, pddsCubeMap, NULL ) ) ) { // エラー処理コード }
注 : キューブ マップのサーフェスに対してレンダリングする場合は、サーフェスを作成するときに定義するサーフェス記述に DDSCAPS_3DDEVICE を含める必要がある。
キューブ マップは管理下のテクスチャにできる。サーフェスを作成するとき、サーフェス能力に DDSCAPS2_TEXTUREMANAGE または DDSCAPS2_TEXTUREMANAGE フラグのいずれかを含めると管理下のテクスチャになる。詳細については、「自動テクスチャ管理」を参照すること。
次のコードは、Visual Basic アプリケーションで単純なキューブ環境マップを作成する方法を示す。
' この例では、dd 変数は DirectDraw7 オブジェクトへの ' 有効な参照である。 On Local Error Resume Next Dim ddsd As DDSURFACEDESC2 ddsd.lFlags = DDSD_CAPS Or DDSD_WIDTH Or _ DDSD_HEIGHT Or DDSD_PIXELFORMAT ddsd.ddsCaps.dwCaps = DDSCAPS_TEXTURE ' ピクセル フォーマットを有効なテクスチャ フォーマットに設定する。 ' 大きさは任意に指定できるが、2 の累乗でなければならない。 ddsd.dwWidth = 64:ddsd.dwHeight = 64 ' 有効なレンダリング ターゲット サーフェスである、システム メモリのキューブ マップ テクスチャの ' 能力を設定する。 ddsd.ddsCaps.dwCaps = DDSCAPS_COMPLEX Or DDSCAPS_3DDEVICE Or _ DDSCAPS_TEXTURE ddsd.ddsCaps.dwCaps2 = DDSCAPS2_CUBEMAP Or DDSCAPS2_CUBEMAP_ALLFACES Dim ddsCubeMap As DirectDrawSurface7 ' キューブ マップを作成する。 Set ddsCubeMap = dd.CreateSurface(ddsd) If Err.Number <> DD_OK Then ' エラー処理コード End If
注 : キューブ マップのサーフェスに対してレンダリングする場合は、サーフェスを作成するときに定義するサーフェス記述に DDSCAPS_3DDEVICE を含める必要がある。
キューブ マップは管理下のテクスチャにできる。サーフェスを作成するとき、サーフェス能力に DDSCAPS2_TEXTUREMANAGE または DDSCAPS2_TEXTUREMANAGE フラグのいずれかを含めると管理下のテクスチャになる。詳細については、「自動テクスチャ管理」を参照すること。