Microsoft DirectX 8.0 (Visual Basic)

ミップマップ セットの作成

次の例は、Direct3DDevice8.CreateTexture を呼び出して、サイズ 256 × 256、128 × 128、64 × 64、32 × 32、および 16 × 16 の 5 つのミップマップ レベルのチェーンを作成する方法を示している。

' このサンプル コードでは、変数 m_D3D は Direct3DDevice8 オブジェクトへの
' 有効な参照を格納すると仮定している。
Dim DDMipmap as Direct3DTexture8

Set DDMipmap = m_D3D.CreateTexture(256, 256, 5, 0, D3DFMT_R8G8B8, D3DPOOL_DEFAULT)

CreateTexture が受け取る最初の 2 つのパラメータは、最上位テクスチャのサイズと幅である。第 3 パラメータには、テクスチャのレベル数を指定する。このパラメータをゼロに設定すると、Microsoft® Direct3D® はサーフェスのチェーンを作成する。各サーフェスは、直前のサーフェスよりも 2 の累乗ずつ小さくなり、最終的に 1 × 1 の最小サイズになる。第 4 パラメータには、このリソースの使用方法を指定する。ここではゼロが指定されているので、リソースには特定の使用方法はないことを示す。第 5 パラメータには、テクスチャのサーフェス フォーマットを指定する。このパラメータには、CONST_D3DFORMAT 列挙型の値を使用する。第 6 パラメータには、作成したリソースを配置するメモリ クラスを示す CONST_D3DPOOL 列挙型のメンバを指定する。動的テクスチャを使用しているのでなければ、D3DPOOL_MANAGED を勧める。

  ミップマップ チェーンの各サーフェスの大きさは、直前のサーフェスの半分になる。最上位ミップマップの大きさが 256 × 128 の場合、2 番目のレベルのミップマップの大きさは 128 × 64 になり、3 番目のレベルは 64 × 32 という順にミップマップの大きさは小さくなり、最終的には 1 × 1 になる。Levels でミップマップ レベルの数を指定することはできない。Levels では、チェーンのミップマップの幅または高さのいずれかが 1 より小さくなることがある。4 × 2 を最上位ミップマップ サーフェスとする単純なケースでは、Levels の最大値は 3 になる。最上位の大きさは 4 × 2 で、次のレベルの大きさは 2 × 1 で、その次のレベルの大きさは 1 × 1 である。Levels の値が 3 より大きいと、第 2 レベルのミップマップの高さは分数になる。したがって、これは許可されない。