我有一个渲染循环,用于监听手写板输入并从顶点/索引缓冲区(除其他之外)绘制。顶点数据可以成长,当它击中一定的水平,DispatchMsg(& MSG)遇到这样的:超过DirectX11视频内存
Unhandled exception at 0x5DDBDEF0 (msvcr110d.dll) in App.exe: 0xC0000005: Access violation writing location 0x00000000.
在场景中分配的顶点和索引缓冲区的总大小是大约在同一水平,每次:
Total Vertices count: 10391370
Total Indices count: 41565480
Total Vertices size: 249392880 (bytes)
Total Indices size: 997571520 (bytes)
并且在另一个采样:
Total Vertices count: 9969300
Total Indices count: 39877200
Total Vert size: 239263200
Total Indices size: 957052800
顶点和索引缓冲器都是D3D11_USAGE_DEFAULT。场景中的总大小分配比上面列出的大,但较小的缓冲区经常被释放。最后在顶点/索引缓冲区中还有一些填充。
即将被派往每次(达到异常时)为581的消息,我认为可能是:
#define WM_POINTERUPDATE 0x0245
我真的不介意的场景渲染慢,但如果我达到一些最大的内存分配(视频内存?)是否有一种方法让内存以速度的速度缓慢地往/从内存中寻址?我尝试禁用调用像素,顶点着色器和绘制调用的draw()调用,但仍然发生异常。我更喜欢速度折衷或解决例外。
您绘制了多少个verticies?这似乎是很多数据。 1000万个顶点? – tadman
正确,看起来很高,所以我在某个时间期待问题,只是想弄清楚原因或可以做些什么。 – user176692
这是很多vert。我很惊讶你可以分配那么多没有东西着火。你是否创造了太多,就像是以某种方式泄漏它们? – tadman