呼叫IASetVerteXbuffers会使以后对设备上下文的所有呼叫造成访问违规(DX 11)

Calling IASetVertexBuffers makes all future calls to the device context cause a access violation(DX 11)

本文关键字:呼叫 访问 DX IASetVerteXbuffers 上下文      更新时间:2023-10-16

我已经环顾四周,没有找到答案,这是代码的有问题的行:d3d-> getimmediatecontext() -> iasetvertexbuffers(0,1,1 ,,& dertexbuffer,,,,& stride,0);

参数中传递的所有内容均未为null(0x00000000)(设备上下文也不是null),但是我仍然在设备上下文上的每个函数呼叫上都会遇到访问违规错误。我收到的例外消息是"在2D Platformer.exe中丢给0x00007ffdfd6cc796(d3d11.dll)的例外:0xc00000055:访问违规读取位置0x0000000000000000000000000000。"。同样,奇怪的是,下次我在设备上下文上调用任何方法时,如果我不设置顶点缓冲区(显然没有绘制),那么就没有崩溃,我可以调用我想要的任何东西。

其他任何人都经历了类似的问题,或者有人建议导致这个问题的原因?

(如果您需要任何澄清,请提出)

我确切地弄清楚了什么问题,看来我在0中传递了0,因为该程序显然无法访问访问权限违规违规错误地址0x00000000。我还认为它在线上破裂了,但是在适当的线路时确实破裂,而不是之后的线路。因此,要解决这个问题,我要做的就是通过这样的变量:&偏移量的偏移参数,并且它起作用

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

我希望将来对其他人有所帮助。