我目前正在研究我的Cpp類的最終項目,其中涉及使用directX11創建2D遊戲。我一直在關注網站rastertek.com(directX 11系列2)的教程,而且大多數情況下它一直都很順利。然而,今天早上我完成的着色器上的部分代碼馬上出現了一些錯誤。DirectX11引擎:編譯錯誤C2719,C2678
起初它給我錯誤C2719在我的colorshaderclass.cpp在行44和248與我的XMMATRIX值被傳入。經過對該主題的一些快速研究後,我更改了那些XMMATRIX值傳遞到常量引用。然後我進入我的colorshaderclass.h
文件,並根據需要將第37和44行上的XMMATRIX值更改爲常量引用。
這樣做後,我不再有錯誤C2719出現。但是現在我在我的colorshaderclass.cpp文件的第256,257和258行出現錯誤C2678(二進制'=':沒有發現操作符,它帶有'const DirectX :: XMMATRIX'類型的左側操作數)。我也對這個錯誤做了一些研究,但它似乎非常依賴於情況,而且我沒有運氣。
其實,我應該說我想我明白爲什麼它會拋出錯誤(一方面是const,另一方面是非常量),但是我在這個時候不得不做的是,將代碼的一部分轉換爲常量引用來讓它們工作。我還應該提到,在這一點上,我的編程經驗還不到六個月,所以,如果這看起來像是一個明顯的修復或其他任何問題,那麼很抱歉。如果任何人有任何見解或想法,將不勝感激。 乾杯!
如果需要,還可以提供整個解決方案的其他幾個部分,但它們都不會引發任何錯誤。
有問題的代碼如下(C2678)
worldMatrix = XMMatrixTranspose(worldMatrix);
viewMatrix = XMMatrixTranspose(viewMatrix);
projectionMatrix = XMMatrixTranspose(projectionMatrix);
,我改爲經常提到的XMMATRIX值:
bool ColorShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, const XMMATRIX& worldMatrix, const XMMATRIX& viewMatrix, const XMMATRIX& projectionMatrix)
bool ColorShaderClass::Render(ID3D11DeviceContext* deviceContext, int indexCount, const XMMATRIX& worldMatrix, const XMMATRIX& viewMatrix, const XMMATRIX& projectionMatrix)
而我在頭文件改變
bool Render(ID3D11DeviceContext*Int, int, const XMMATRIX&, const XMMATRIX&, const XMMATRIX&);
bool SetShaderParameters(ID3D11DeviceContext*, const XMMATRIX&, const XMMATRIX&, const XMMATRIX&);