Platform SDK: DirectX

ライトの有効/無効

[C++]

シーン内の光源のライト プロパティ セットをいったん割り当てると、デバイスに対して IDirect3DDevice7::LightEnable メソッドを呼び出すことで、その光源をアクティブにすることができる。新しく割り当てた光源は、デフォルトでは無効になっている。LightEnable メソッドは、2 つのパラメータを受け取る。第 1 パラメータには、メソッドで処理する光源のインデックス (0 から始まる) を設定する。第 2 パラメータには、ライトを有効にする場合は TRUE を、無効にする場合は FALSE を設定する。

次のコードは、LightEnable メソッドを使用して、デバイスの光源プロパティのリスト内の最初の光源を有効にする方法を示す。

/*
* この例では、g_lpd3dDev は IDirevt3DDevice7 インターフェイスへの
* 有効なポインタである。
 */
HRESULT hr;

hr = g_lpd3dDev->LightEnable(0, TRUE);
if (FAILED(hr))
{
// エラー処理コード
}
[Visual Basic]

シーン内の光源のライト プロパティ セットをいったん割り当てると、デバイスに対して Direct3DDevice7.LightEnable メソッドを呼び出すことで、その光源をアクティブにすることができる。新しく割り当てた光源は、デフォルトでは無効になっている。LightEnable メソッドは、2 つのパラメータを受け取る。第 1 パラメータには、メソッドで処理する光源のインデックス (0 から始まる) を設定する。第 2 パラメータには、ライトを有効にする場合は TRUE を、無効にする場合は FALSE を設定する。

次のコードは、LightEnable メソッドを使用して、デバイスの光源プロパティのリスト内の最初の光源を有効にする方法を示す。

'
' この例では、d3dDevice 変数に Direct3DDevice7 オブジェクトへの
' 有効な参照が格納される。
'
On Local Error Resume Next

Call d3dDevice.LightEnable(0, True)
If Err.Number <> DD_OK Then
' エラー処理コード
End If

プロパティがないライトを有効にする場合、またはデバイス内で割り当てられているライト プロパティ セットの範囲外のインデックスを指定した場合、LightEnable メソッドは以下のプロパティを持つ光源を作成し、その光源を有効または無効にする。

メンバ デフォルト
dltType D3DLIGHT_DIRECTIONAL
dcvDiffuse (R:1, G:1, B:1, A:0)
dcvSpecular (R:0, G:0, B:0, A:0)
dcvAmbient (R:0, G:0, B:0, A:0)
dvPosition (0, 0, 0)
dvDirection (0, 0, 1)
dvRange 0
dvFalloff 0
dvAttenuation0 0
dvAttenuation1 0
dvAttenuation2 0
dvTheta 0
dvPhi 0