2017-02-23 73 views
0

我已經環顧四周,並沒有發現一個答案的所有呼叫轉移到設備上下文導致訪問衝突(DX 11),這是問題的代碼行:d3d-> GetImmediateContext() - > IASetVertexBuffers(0,1,& vertexBuffer,& stride,0);調用IASetVertexBuffers使得

無在參數傳遞的是NULL(00000000)(設備上下文也是不爲空),但我仍然可以對設備上下文每個函數調用訪問衝突錯誤。異常消息我得到的是「在2D Platformer.exe異常在0x00007FFDFD6CC796(d3d11.dll)拋出:0000005:訪問衝突讀取位置0x0000000000000000。」同樣奇怪的是,它這下一次我呼籲設備上下文的任何方法,如果我不設置頂點緩衝呢(當然什麼也不繪製),那麼有沒有崩潰,我可以叫我什麼都想要。

任何人都經歷了類似的問題或有沒有人有什麼可能會造成這個問題有何建議?

(如果你需要任何澄清,只是要求)

回答

0

我想通了,什麼是錯的,我好像是在0中傳遞其算作一個空指針拋出訪問衝突錯誤,因爲該程序偏移顯然沒有訪問地址0x00000000。此外,我認爲它後來破產了,但它確實在適當的線路中斷,而不是後面的線路。因此,要解決這個問題,所有我需要做的就是在傳遞這樣一個變量:&的偏移參數中的偏移和它的工作

unsigned int offset = 0; 
d3d->GetImmediateContext()->IASetVertexBuffers(0, 1, &vertexBuffer, &stride,&offset); 

我希望這可以幫助別人,將來別人。

+0

記住''IASetVertexBuffers''取指針數組以''ID3D11Buffer'',不是指針到一個。這使得使用有時會有點混亂。 –

+0

謝謝,早些時候我確實遇到了問題 – JustinWeq

相關問題