【问题标题】:Native DirectX, Basic Effect(.fx) Workflow原生 DirectX、基本效果 (.fx) 工作流程
【发布时间】:2012-02-09 01:38:12
【问题描述】:

我之前在 XNA 中使用过 hlsl 效果,但现在我尝试在带有 DirectX9 的 C++ 中使用它们并且对某些点感到困惑:

  1. 在 XNA 中,您可以在解决方案资源管理器中显示 .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)

【问题讨论】:

    标签: c++ visual-studio-2010 directx effect


    【解决方案1】:
    1. 从文件创建效果时,只需为其提供工作目录中文件的相对路径即可。如果您不想要,则无需将其捆绑到您的应用程序中。

    2. 您还必须 #include d3dx9.h(并引用关联的 d3dx9.lib)。 D3DX 正在处理效果处理、3D 数学(向量和矩阵)以及其他一些事情。使用 D3D 并非绝对需要它们,因此它们保存在单独的库中。

    【讨论】:

    • 我收到此错误:LNK1104:无法打开文件 'd3dx9.lib'。我已将 lib 添加到项目属性中的“附加依赖项”字符串中,我还需要做些什么吗?
    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多