Microsoft DirectX 8.0 (Visual Basic) |
光源で照らしたときに輝くオブジェクト (反射性の高いマテリアルを使用するオブジェクト) は、スペキュラ ハイライトを受け取る。場合によっては、ライティング モジュールで生成されたスペキュラ ハイライトは正確でない場合もある。より効果的なハイライトを生成するために、多くの Microsoft® Direct3D® アプリケーションではプリミティブにスペキュラ ライト マップを適用する。
スペキュラ ライト マッピングを実行するには、まずスペキュラ ライト マップをプリミティブの既存のテクスチャに合わせて乗算する。次に、モノクロまたは RGB ライト マップを追加する。
次のコードは、Microsoft® Visual Basic® でこの処理を実行する例を示している。
' この例では、d3dDevice は Direct3DDevice8 オブジェクトへの ' 有効な参照であると仮定している。 ' texBaseTexture は、テクスチャへの有効な参照である。 ' texSpecLightMap は、RGB スペキュラ ライト マップ データを含む ' テクスチャへの有効な参照である。 ' texLightMap は、RGB ライト マップ データを含む ' テクスチャへの有効な参照である。 ' ベース テクスチャを設定する。 Call d3dDevice.SetTexture(0, texBaseTexture) ' ベース テクスチャ処理と引数を設定する。 Call d3dDevice.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE) Call d3dDevice.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE) Call d3dDevice.SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE) ' スペキュラ ライト マップを設定する。 Call d3dDevice.SetTexture(1, texSpecLightMap) ' スペキュラ ライト マップ処理と引数を設定する。 Call d3dDevice.SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADD) Call d3dDevice.SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE) Call d3dDevice.SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT) ' RGB ライト マップを設定する。 Call d3dDevice.SetTexture(2, texLightMap) ' RGB ライト マップ処理と引数を設定する。 Call d3dDevice.SetTextureStageState(2, D3DTSS_COLOROP, D3DTOP_MODULATE) Call d3dDevice.SetTextureStageState(2, D3DTSS_COLORARG1, D3DTA_TEXTURE) Call d3dDevice.SetTextureStageState(2, D3DTSS_COLORARG2, D3DTA_CURRENT)