访问冲突 - > CreateVertexShader

时间:2014-01-17 23:31:03

标签: c++ visual-studio shader access-violation unhandled-exception

我正在玩DirectX,我已经到了必须在其他方面玩着色器的地步。因为D3DX不再存在(:P)我必须使用D3DCompile来编译着色器。我用这段代码:

D3DCompile(//Vertex Shader
    L"shaders.hlsl",//Pointer to shader data
    sizeof(L"shaders.hlsl"),//Shader size
    NULL,//OPTIONAL, name used in error msgs
    NULL,//OPTIONAL,  An array of NULL-terminated macro definitions(wut?)
    D3D_COMPILE_STANDARD_FILE_INCLUDE,//OPTIONAL, DONT PASS NULL, pass D3D_COMPILE_STANDARD_FILE_INCLUDE which is the defualt
    "VShader",//Name of shaders starting function
    "vs_5_0",//Shader target, vs_5_0 for vertex shader and ps_5_0 for pixel shader
    NULL,//Shader compile options --> http://msdn.microsoft.com/en-us/library/windows/apps/gg615083(v=vs.85).aspx, set to NULL
    0,//Shader effect compile options --> http://msdn.microsoft.com/en-us/library/windows/apps/gg615084(v=vs.85).aspx, set to 0
    &VS,//Pointer to var that will hold shader
    NULL//OPTIONAL, Pointer to var that holds error messages
    );

正如您所见,我指向VS将输出已编译的代码。然后我使用此代码将着色器封装在着色器对象中:

m_pDevice->CreatePixelShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);

VS初始化为ID3D10Blob *VSpVS初始化为ID3D11VertexShader *pVS

当我运行它时(其余代码与之关联)我得到Unhandled expression

Unhandled exception at 0x009188FC in Hello_DirectX11.exe: 0xC0000005: Access violation reading location 0x00000000.

当我突破时,当我将着色器封装在着色器对象中时,它会破坏上面的代码。


我该如何解决这个/什么是错的?

还有什么好方法可以用VS 2013来调试这种东西吗?

0 个答案:

没有答案