D3DCompileFromFile与D3DX11CreateEffectFromMemory?

时间:2014-05-19 16:51:02

标签: c++ directx directx-11

我有一个使用directX 9和10的旧代码,并使用DirectX 11和Effects 11(使用D3DX11)构建它。一切都在运作。 我决定删除任何已弃用的代码,并仅使用D3D库。但是,我仍然想使用效果框架。

我将代码转换为使用DirectXMath(D3DXVECTOR4到XMFLOAT4等)。我更改了de D3DX功能等。 我的代码编译,但在运行时D3DX11CreateEffectFromMemory返回错误。我想知道DXUTCompileFromFile返回的二进制代码是不是被函数正确读取了?我还应该使用D3DX11CompileFromFile(我认为不推荐使用)吗?但是我必须包括d3dx11.h。

感谢您的帮助。

ID3DBlob* compileShader = 0;
ID3DBlob* compilationMsgs = 0;

V_RETURN( DXUTCompileFromFile(L"EffectsFile.fx", pShaderMacros, NULL, "fx_5_0", dwShaderFlags, 0, &compileShader) );

V_RETURN( D3DX11CreateEffectFromMemory( compileShader->GetBufferPointer(),
    compileShader->GetBufferSize(), 0, pd3dDevice, &g_pEffect) );

compileShader->Release();

1 个答案:

答案 0 :(得分:0)

显然问题来自我的Effects11.lib。 我猜它是使用2010年6月的工具包编译的。

按照此处的说明https://fx11.codeplex.com/wikipage?title=Effects%2011,一切正常。