Microsoft DirectX 8.0 (Visual Basic)

ミップマップとは

ミップマップとは連続したテクスチャで、各テクスチャは同じ画像を徐々に低解像度にしたものである。ミップマップでの各画像の高さと幅、つまりレベルは、直前のレベルよりも 2 の累乗だけ小さい。ミップマップは正方形である必要はない。

ユーザーに近いオブジェクトには、高解像度ミップマップ画像が使用される。オブジェクトが遠ざかるに従って、低解像度のミップマップ画像が使用される。ミップマップ処理により、レンダリングしたテクスチャの品質が向上するが、使用するメモリは増加する。

Microsoft® Direct3D® では、ミップマップはアタッチされたサーフェスのチェーンとして表される。このチェーンの先頭には最高解像度のテクスチャがあり、その後には次のミップマップ レベルのテクスチャが続く。このレベルの後には次のレベルのミップマップが続く、という順に最低解像度のミップマップになるまで続いていく。

次の図は、これらのレベルの例を示している。ビットマップ テクスチャは、対面型のゲームの 3D コンテナの側面にある記号を表している。ミップマップとして作成すると、最高解像度のテクスチャがこのセットの先頭にくる。このミップマップ セットの連続する各テクスチャは、高さと幅が 2 の累乗ずつ小さくなっていく。この場合、最高解像度のミップマップは 256x256 ピクセルである。次のテクスチャは 128x128 である。最後のテクスチャは 64x64 である。

この記号は可視範囲内の最大距離にある。この記号から遠く離れた位置からゲームを開始する場合、ミップマップ チェーンの中で最小のテクスチャ (この場合 64x64 テクスチャ) が表示される。

ユーザーの視点がこの記号に近づくにつれて、徐々に高解像度のテクスチャが使用される。次の図の解像度は 128x128 である。

最高解像度のテクスチャが使用されるのは、プレーヤーの視点がこの記号に最も近づいたときである。

これは、テクスチャのパースペクティブをシミュレートする方法の中ではオーバーヘッドが低い方法である。1 つのテクスチャを多くの解像度でレンダリングするよりも、さまざまな解像度で複数のテクスチャを使用する方が高速である。

Direct3D では、ミップマップ セットの中でどのテクスチャが最も目的出力に近い解像度であるかを評価し、ピクセルをそのテクセル空間にマッピングできる。最終的な画像の解像度がミップマップ セット内のテクスチャ間にある場合、Direct3D では両方のミップマップのテクセルを調べ、そのカラー値をブレンドする。

ミップマップを使用するには、アプリケーションでミップマップのセットを作成する必要がある。詳細については、「ミップマップ セットの作成」を参照すること。アプリケーションでは、ミップマップ セットをカレント テクスチャ セットの最初のテクスチャとして選択して、ミップマップを適用する。詳細については、「マルチ テクスチャ ブレンディング」を参照すること。

次に、Direct3D でテクセルのサンプリングに使用するフィルタリング方法を設定しなければならない。最も処理が速いミップマップ フィルタリングは、Direct3D で最も近いテクセルを選択する方法である。これ選択するには、D3DTFP_POINT 列挙値を使用する。Direct3D では、D3DTFP_LINEAR 列挙値を使用すると、より高品質なフィルタリング結果が得られる。このフィルタリングでは、最も近いミップマップが選択され、次に現在のピクセルがマッピングされる、テクスチャ内の位置座標の周辺テクセルの加重平均が計算される。