我有一个使用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();
答案 0 :(得分:0)
显然问题来自我的Effects11.lib。 我猜它是使用2010年6月的工具包编译的。
按照此处的说明https://fx11.codeplex.com/wikipage?title=Effects%2011,一切正常。