我之前在XNA中使用过hlsl效果,但现在我尝试在C ++中使用它们与DirectX9并且对某些问题感到困惑:
在XNA中,您可以在解决方案资源管理器中显示.fx文件,这是如何在C ++中完成的?因为我在添加fx文件时遇到了一些困难。或者你只是将所有内容放在项目目录的文件夹中。并从Windows资源管理器中浏览它?
我有以下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 :(得分:0)
从文件创建效果时,只需从工作目录中为其指定文件的相对路径即可。如果您不想要,则无需将其捆绑到您的应用程序中。
您还必须#include d3dx9.h(并引用相关的d3dx9.lib)。 D3DX正在处理效果处理,3D数学(矢量和矩阵)以及其他一些事情。它们并非绝对需要使用D3D,因此它们保存在一个单独的库中。