我試圖弄清楚爲什麼在運行我的代碼時我總是收到E_INVALIDARG錯誤。D3D11中的E_INVALIDARG
ID3D11Buffer * cbPerObjectBuffer;
cbPerObject cbPerObj;
cbPerObjectBuffer = 0;
D3D11_BUFFER_DESC cbbd;
ZeroMemory(& cbbd, sizeof(D3D11_BUFFER_DESC));
cbbd.Usage = D3D11_USAGE_DEFAULT;
cbbd.ByteWidth = sizeof(cbPerObject);
cbbd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
cbbd.CPUAccessFlags = 0;
cbbd.MiscFlags = 0;
cbbd.StructureByteStride = 0;
hr = device - > CreateBuffer(& cbbd, NULL, & cbPerObjectBuffer);
if (hr == E_INVALIDARG) {
MessageBox(0, L "[CBPEROBJECTBUFFER] An invalid parameter was passed to the returning function.", L "Error", MB_OK);
return;
} else if (hr == E_OUTOFMEMORY) {
MessageBox(0, L "[CBPEROBJECTBUFFER] Out of memory", L "Error", MB_OK);
return;
} else if (FAILED(hr)) {
MessageBox(0, L "[CBPEROBJECTBUFFER] An unknown error occured", L "Error", MB_OK);
return;
}
運行代碼時,我不斷收到E_INVALIDARG錯誤。我自己似乎無法弄清楚爲什麼我得到這個錯誤。 如果任何人都可以指引我走向正確的方向,我會很棒! :)
不是您的問題的解決方案,但可以通過使用[調試層(請參閱MSDN)]找到解決方案(https://msdn.microsoft.com/zh-cn/library/windows/desktop /jj200584(v=vs.85).aspx)。它的診斷信息通常非常有用。 – Timbo
謝謝。不過,我似乎無法弄清楚使用DX :: ThrowIfFiled的內容。有任何想法嗎? –
ThrowIfFiled無法正常工作。重要的部分是添加到創建調用的調試標誌。然後它應該開始寫消息來調試輸出。 – Timbo