gpt4 book ai didi

c++ - E_INVALIDARG CreatePixelShader() 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:27 25 4
gpt4 key购买 nike

我有以下代码:

struct shaderData
{
char *shaderCode;
UINT size;
};

struct shaderData *CubeApp::GetShaderByteCode(char *compiledShader)
{
struct shaderData *sData = (struct shaderData *)malloc(sizeof(struct shaderData));

std::ifstream fin(compiledShader, std::ios::binary);

fin.seekg(0, std::ios_base::end);
UINT size = (int)fin.tellg();
fin.seekg(0, std::ios_base::beg);

sData->shaderCode = (char *)malloc(size);

fin.read(sData->shaderCode, size);
fin.close();

sData->size = size;

return sData;
}

void CubeApp::InitShaders()
{
struct shaderData *sData = GetShaderByteCode("PShader.cso");

HRESULT hr = m_d3dDevice->CreatePixelShader(sData->shaderCode, sData->size, NULL, &m_d3dPShader);
}

但是调用CreatePixelShader()时返回E_INVALIDARG,m_d3dPShader是一个NULL指针。

有什么想法吗?

最佳答案

这正是我的问题。我的硬件显示并报告支持 DirectX 11_0,但是使用 vs_5_0 或 ps_5_0 的配置文件编译我的顶点或像素着色器会导致 CreateVertexShader() | CreatePixelShader() 返回 E_INVALIDARG。

一旦我使用 vs_4_0、ps_4_0 的配置文件重新编译着色器,调用就会返回 S_OK。

关于c++ - E_INVALIDARG CreatePixelShader() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com