Platform SDK: DirectX

シェーディング モードの設定

[C++]

Direct3D では、一度に 1 つのシェーディング モードしか選択できない。デフォルトでは、グーロー シェーディングが選択されている。C++ では、IDirect3DDevice7::SetRenderState メソッドを呼び出してシェーディング モードを変更できる。dwRenderStateType パラメータを D3DRENDERSTATE_SHADEMODE に設定する。dwRenderState パラメータには D3DSHADEMODE 列挙のメンバを設定する。次のサンプル コードは、Direct3D アプリケーションの現在のシェーディング モードを、フラット シェーディング モードまたはグーロー シェーディング モードに設定する方法を示す。

// フラット シェーディングに設定する。
// このコードでは、lpDev が IDirect3DDevice7 インターフェイスへの
// 有効なポインタであるとする。
hr = lpDev->SetRenderState(D3DRENDERSTATE_SHADEMODE, D3DSHADE_FLAT);
if(FAILED(hr))
{
    // エラー処理コード
}
 
// グーロー シェーディングに設定する (Direct3D のデフォルト設定)。
hr = lpDev->SetRenderState(D3DRENDERSTATE_SHADEMODE,
                            D3DSHADE_GOURAUD);
if(FAILED(hr))
{
    // エラー処理コード
}
[Visual Basic]

Direct3D では、一度に 1 つのシェーディング モードしか選択できない。デフォルトでは、グーロー シェーディングが選択されている。Visual Basic では、Direct3DDevice7.SetRenderState メソッドを呼び出してシェーディング モードを変更できる。state パラメータを D3DRENDERSTATE_SHADEMODE に設定する。renderstate パラメータには、CONST_D3DSHADEMODE 列挙のメンバを設定する。次のサンプル コードは、Direct3D アプリケーションの現在のシェーディング モードを、フラット シェーディング モードまたはグーロー シェーディング モードに設定する方法を示す。

' フラット シェーディングに設定する。
' このコードでは、d3dDev が Direct3DDevice7 オブジェクトへの
' 有効な参照であるとする。
On Local Error Resume Next
Call d3dDev.SetRenderState(D3DRENDERSTATE_SHADEMODE, _ 
                           D3DSHADE_FLAT)
 
' エラーを調べる。
If Err.Number <> DD_OK Then
    ' エラー処理
End If
 
' グーロー シェーディングに設定する (Direct3D のデフォルト設定)。
Call d3dDev.SetRenderState(D3DRENDERSTATE_SHADEMODE, _ 
                           D3DSHADE_GOURAUD)
 
If Err.Number <> DD_OK Then
    ' エラー処理
End If