在 ID3DBlob 中初始化 PS 的 DirectX11 CreatePixelShader 中的访问冲突

Access violation in DirectX11 CreatePixelShader with initialized PS in a ID3DBlob

我正在做一些 directX,出于某种原因 device->CreatePixelShader 给我一个访问冲突错误 我已将 ID3DBlob pShader 中的 PS 初始化为 ID3D11PixelShader ,这告诉我它在我调试后为 NULL 似乎有没什么问题,有什么帮助吗?非常感谢

// Create the input layout
ID3DBlob *VS, *PS;

D3DX11CompileFromFile(L"shaders.shader", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"shaders.shader", 0, 0, "PShader", "vs_5_0", 0, 0, 0, &PS, 0, 0);

device->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &vShader);
device->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pShader);

context->VSSetShader(vShader, 0, 0);
context->PSSetShader(pShader, 0, 0);

该像素着色器不会使用 vs_5_0 作为配置文件进行编译。检查您的 HRESULT!

认真检查 HRESULT return 值的一个好机制是在所有此类调用周围使用一个宏来检查结果是否成功并抛出错误。我在 Chapter 1 of my free book "The Direct3D Graphics Pipeline".

中概述了执行此操作的简单策略