У меня есть цикл рендеринга, который прослушивает вход для планшетов и выводит из буферов вершин/индекс (между прочим). Данные вершины могут расти и, когда она попадает определенных уровней, DispatchMsg (& тзд) встречает это:Недостаток видеопамяти 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(), который вызывает пиксельные, вершинные шейдеры и вызовы рисования, но исключение все еще происходит. Я бы предпочел компромисс скорости или обходной путь к исключению.
Сколько вертиций вы рисуете? Это похоже на множество данных. 10 миллионов верт? – tadman
Правильно, это кажется высоким, поэтому я ожидаю проблемы в какой-то момент, просто хочу выяснить причину или что можно сделать по этому поводу. – user176692
Это много верт. Я удивлен, что вы могли бы выделить столько, если бы не загорелось. Вы создаете слишком много, например, как их утечка? – tadman