Родной DirectX, базовый эффект (.fx) Рабочий процесс - PullRequest
0 голосов
/ 08 февраля 2012

Раньше я использовал эффекты hlsl в XNA, но сейчас я пытаюсь использовать их в C ++ с DirectX9, и меня смущают некоторые моменты:

  1. В XNA у вас может быть файл .fx, представленный в обозревателе решений, это тоже так в C ++? Поскольку у меня были некоторые трудности с добавлением файла FX Или вы просто положите все в папку в каталоге проекта. и просто просмотреть его из проводника Windows?

  2. У меня есть следующий код C ++ для загрузки эффекта:

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

Но типы и функции не распознаются / не обнаруживаются, поэтому я думаю, что мне не хватает #include (в настоящее время у меня есть только d3d9.h)

1 Ответ

0 голосов
/ 08 февраля 2012
  1. При создании эффекта из файла просто укажите относительный путь к файлу из вашего рабочего каталога. Нет необходимости включать его в ваше приложение, если вы не хотите.

  2. Вы также должны #include d3dx9.h (и ссылаться на связанный d3dx9.lib). D3DX обрабатывает эффекты, 3D-математику (векторы и матрицы) и некоторые другие вещи. Им не обязательно использовать D3D, поэтому они хранятся в отдельной библиотеке.

...