Microsoft DirectX 8.0 (C++) |
エフェクトを作成する最初の手順は、エフェクトのコンパイルである。次の関数を使って、エフェクトをコンパイルできる。
次のサンプル コードでは、D3DXCompileEffectFromFileA 関数を使って、ファイル Water.sha に定義されたエフェクトをロードしてコンパイルしている。
LPD3DXBUFFER pCompiledEffect; D3DXCompileEffectFromFile( "Water.sha", &pCompiledEffect, NULL );
D3DXCompileEffectFromFileA の 1 番目のパラメータは、エフェクトが定義されたファイルを指定する ANSI 文字列へのポインタである。2 番目のパラメータは、ID3DXBuffer インターフェイスへのポインタのアドレスである。このバッファには、コンパイルされたエフェクトが格納される。D3DXCompileEffectFromFileA の最後のパラメータは、ID3DXBuffer インターフェイスへのポインタのアドレスである。このバッファには、返された ASCII エラー メッセージが格納される。この例では、エラーを無視し、このパラメータに NULL を設定している。
エフェクトをコンパイルした後は、次の例に示すように、D3DXCreateEffect 関数を使って ID3DXEffect インターフェイスへのポインタを取得する。
ID3DXEffect * pEffect; D3DXCreateEffect( g_d3dDevice, pCompiledEffect->GetBufferPointer(), pCompiledEffect->GetBufferSize(), 0, &pEffect); pCompiledEffect->Release();
この関数が成功すると、pEffect に ID3DXEffect インターフェイスへの有効なポインタが格納される。コンパイル済みのエフェクトを格納した ID3DXBuffer によって終了した後、必ず IUnknown::Release メソッドを呼び出してメモリ リークを防ぐ。