2
我有以下代碼:E_INVALIDARG CreatePixelShader()錯誤
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指針。
任何想法?
PShader.cso文件是否包含編譯着色器或源代碼? –
編譯來自fxc.exe的着色器代碼(即時通訊在Windows 8上使用visual studio 2012) – user1944605
哇。我只是將着色器模型從5.0降低到了4.0 ..我認爲我的顯卡能夠使用着色器模型5 ...結束了工作。感謝您帶領我朝着正確的方向前進。哈哈 – user1944605