DirectX 尝试创建着色器

DirectX Trying to create 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;
}

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