2012-02-08 4 views
0

私はXNAで前のHLSLエフェクトを使用していたが、今私はDirectX9のC++でそれらを使用しようとしていますし、いくつかの点について混乱しています:XNAでネイティブのDirectX、基本エフェクト(FreeBSDの)ワークフロー

  1. .fxファイルをソリューションエクスプローラに表示させることができます。これはC++でも同様に行われますか?私はfxファイルを追加するのにいくつかの問題がありました。それとも、プロジェクトディレクトリ内のフォルダにすべてを置くだけですか? Windowsエクスプローラからブラウズするだけですか?

  2. 私は効果をロードするには、次のC++コードを持っている:

ID3DXEffect* g_pEffect = NULL;
DWORD dwShaderFlags = 0;
dwShaderFlags |= D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT;
dwShaderFlags |= D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT;
dwShaderFlags |= D3DXSHADER_NO_PRESHADER;
// Read the D3DX effect file
WCHAR str[MAX_PATH];
DXUTFindDXSDKMediaFileCch(str, MAX_PATH, L"BasicHLSL.fx");
D3DXCreateEffectFromFile(pd3dDevice, str, NULL, NULL, dwShaderFlags, NULL, &g_pEffect, NULL);

をしかし型や関数が見つかっ/認識されていないので、私は私が欠けていると思っています#includeは、(現在は私だけd3d9.hを持っている)

答えて

0
  1. ファイルからエフェクトを作成し、ちょうどあなたの作業ディレクトリから、それをファイルへの相対パスを与えます。必要ない場合は、アプリケーションにバンドルする必要はありません。

  2. #include d3dx9.h(また、関連するd3dx9.libを参照)も必要です。エフェクトの取り扱い、3D数学(ベクトルと行列)、その他いくつかのことがD3DXで扱われています。 D3Dは絶対にD3Dを使用する必要はありませんので、別のライブラリに保存されています。

+0

このエラーが発生します:LNK1104:ファイル 'd3dx9.lib'を開くことができません。私はプロジェクトのプロパティで '追加の依存関係'の文字列にlibを追加しました。何か他に必要なことはありますか? – LynchDev