Я пытаюсь найти лучший способ изменить размер графического интерфейса. Я попытался просто повторно инициализировать устройство, не удаляя мои буферы форм, которые я сделал, но я закончил с большой утечкой памяти.
Я не нашел ничего полезного на эту тему.
Нужно ли удалять все [буферы, устройства, адаптеры] & перезапустить графический интерфейс с нуля?
Или есть эффективный способ сделать это?
Это для интерфейса DX 10/11.
Редактировать:
Это много кода, чтобы показать, но я просто:
cleanup(); // Pointers related to the device
initDevice(hWnd); // Create new device with updated size
draw(stuff); // I never deleted my constant/index/vertex buffers
Чтобы быть конкретным, я не удалил эти:
ID3D11Buffer* constantBuffer;
ID3D11Buffer* vertexBuffer;
ID3D11Buffer* indexBuffer;
ID3D11VertexShader* vertexShader;
ID3D11PixelShader* pixelShader;
ID3D11InputLayout* vertexLayout;
Я надеялся сохранить производительность, не воссоздавая графику каждый раз, когда пользователь изменяет размеры.
Есть MSDN статья который объясняет, что вам нужно сделать. Вы читали это?
Других решений пока нет …