Platform SDK: DirectX

キューブ環境マップ サーフェスの作成

キューブ環境マップを作成するには、C++ の場合は IDirectDraw7::CreateSurface メソッドを、Visual Basic の場合は DirectDraw7.CreateSurface を呼び出す。キューブ マップは複合サーフェスである。つまり、キューブ マップはアタッチされたサーフェスのセットであり、1 回の呼び出しで DirectDraw によって作成される。個別に作成されたサーフェスは、互いにアタッチしてキューブ環境マップを作成することはできない。キューブ環境マップ テクスチャは矩形でなければならず、その大きさは 2 の累乗である。

[C++]

次のコードは、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]

次のコードは、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 フラグのいずれかを含めると管理下のテクスチャになる。詳細については、「自動テクスチャ管理」を参照すること。