Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ E_INVALIDARG CreatePixelShader()错误_C++_Windows 8_Directx - Fatal编程技术网

C++ E_INVALIDARG CreatePixelShader()错误

C++ E_INVALIDARG CreatePixelShader()错误,c++,windows-8,directx,C++,Windows 8,Directx,我有以下代码: struct shaderData { char *shaderCode; UINT size; }; struct shaderData *CubeApp::GetShaderByteCode(char *compiledShader) { struct shaderData *sData = (struct shaderData *)malloc(sizeof(struct shaderData)); std::ifstream fin(c

我有以下代码:

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是一个空指针


有什么想法吗?

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


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

PShader.cso文件是否包含编译的着色器或源代码?从fxc.exe编译的着色器代码(我在windows 8上使用visual studio 2012)哇。我刚刚将着色器模型从5.0降低到4.0。。我以为我的显卡可以使用shader model 5。。。最后工作了。谢谢你给我指引了正确的方向。哈方向完全正确:)顺便说一句,DirectX调试模式在这种情况下很有帮助:嗯。。这很奇怪,我使用shader model 4.0编译,CreatePixelShader()可以工作。。。但我知道我的图形卡(GeForce GT 440)支持DirectX 11。。这意味着我有着色器模型5.0。