我是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;
}
答案 0 :(得分:1)
检查您调用D3DCompileFromFile返回的HRESULT,它可能失败了。如果是这样,请检查错误blob中的字符串以找出原因。