DirectX尝试创建着色器

时间:2015-04-11 12:09:59

标签: directx shader

我是DirectX的新手,我正在尝试编译着色器,但我一直收到错误。有人可以帮帮我吗?

我得到的错误是......

Project1.exe中0x00D06A6D处的未处理异常:0xC0000005:访问冲突读取位置0xCCCCCCCC。

当它碰到这条线的时候:

    m_pDevice->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &m_pVS);

DX代码:

ID3DBlob *VS, *PS;
ID3DBlob* VSerrorBlob = nullptr;
ID3DBlob* PSerrorBlob = nullptr;

D3DCompileFromFile(L"shader.fx", 0, D3D_COMPILE_STANDARD_FILE_INCLUDE, "VShader",  "vs_4_0_level_9_1",
    D3DCOMPILE_ENABLE_STRICTNESS, 0, &VS, &VSerrorBlob );

D3DCompileFromFile(L"shader.fx", 0, D3D_COMPILE_STANDARD_FILE_INCLUDE, "PShader",  "ps_4_0_level_9_1",
    D3DCOMPILE_ENABLE_STRICTNESS, 0, &PS, &PSerrorBlob );

m_pDevice->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &m_pVS);
m_pDevice->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &m_pPS);

着色器代码:

    struct VOut
{
    float4 position : SV_POSITION;
    float4 color : COLOR;
};

VOut VShader(float4 position : POSITION, float4 color : COLOR)
{
    VOut output;

    output.position = position;
    output.color = color;

    return output;
}


float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
    return color;
}

1 个答案:

答案 0 :(得分:1)

检查您调用D3DCompileFromFile返回的HRESULT,它可能失败了。如果是这样,请检查错误blob中的字符串以找出原因。