Platform SDK: DirectX

ライト プロパティの取得

[C++]

C++ で、既存の光源のプロパティをすべて取得するには、デバイスに対して IDirect3DDevice7::GetLight メソッドを呼び出す。GetLight メソッドを呼び出すとき、プロパティを取得する光源の 0 から始まるインデックスを第 1 パラメータに渡し、D3DLIGHT7 構造体のアドレスを第 2 パラメータに渡す。デバイスは、D3DLIGHT7 構造体に値を設定して、指定されたインデックスの光源でそのデバイスが使用するライト プロパティを記述する。

次の C++ コードはこの処理を示す。

    /*
* この例では、g_lpd3dDev 変数は IDirect3DDevice7 インターフェイスへの
* 有効なポインタである。
     */
HRESULT hr;
D3DLIGHT7 light;
    
// 最初のライトについてのプロパティ情報を取得する。
hr = g_lpd3dDev->GetLight(0, light);
if (FAILED(hr))
    {
// エラー処理コード
    }

デバイス内で割り当てられている光源の範囲外のインデックスを指定すると、GetLight メソッドは失敗し、DDERR_INVALIDPARAMS を返す。

[Visual Basic]

Visual Basic アプリケーションで、既存の光源のプロパティを取得するには、デバイスに対して Direct3DDevice7.GetLight メソッドを呼び出す。GetLight メソッドを呼び出すとき、プロパティを取得する光源の 0 から始まるインデックスを第 1 パラメータに渡し、D3DLIGHT7 型の変数を第 2 パラメータに渡す。デバイスは、D3DLIGHT7 型に値を設定して、指定されたインデックスの光源でそのデバイスが使用するライト プロパティを記述する。

次の Visual Basic コードはこの処理を示す。

'
' この例では、d3dDevice 変数に Direct3DDevice7 オブジェクトへの
' 有効な参照が格納される。
'
Dim lightDesc As D3DLIGHT7

' 最初のライトについてのプロパティ情報を取得する。
Call d3dDevice.GetLight(0, lightDesc)
If Err.Number <> DD_OK Then
' エラー処理コード
End If

デバイス内で割り当てられている光源の範囲外のインデックスを指定すると、GetLight メソッドは失敗し、Err.Number の値が DDERR_INVALIDPARAMS になる。