Я только начал изучать DX, поэтому я почти ничего не знаю об этом, хотя я знаю OpenGL (в определенной степени). Я следую учебнику (http://www.rastertek.com/tutdx11.html) и у меня есть рабочее окно рендеринга только на белом фоне (ясно).
Теперь — как мне на самом деле переключиться из оконного режима в полноэкранный режим и наоборот? Я знаю, что есть много учебных пособий, некоторые даже предоставляют код для этого, но поскольку я новичок, это не очень полезно. Зачем? Потому что каждый пример кода отличается, и попытка найти шаблон во всех них, по-видимому, слишком сложна для меня.
Поэтому я не прошу код — вместо этого я хотел бы, чтобы вы сказали мне какие вещи мне нужно выпустить / воссоздать / изменить правильно переключаться (и все они). Я знаю, что мне нужно изменить настройки дисплея, я знаю, что мне нужно что-то изменить в цепочке подкачки и освободить / воссоздать некоторые буферы — но не совсем уверен, что именно.
Вы можете использовать SetFullScreenState в вашей цепочке обмена:
swapChain->SetFullScreenState(true, NULL);
Главное, что вам нужно сделать, это освободить все ссылки на IDXGISwapChain
, вызов ResizeBuffers
, а затем воссоздать все.
С Win32 кидает WM_SIZE
сообщение при инициализации окна, вполне возможно:
внутри static
функция (если WinMain
имеет объект для вызова) и вызывает эту функцию, когда WM_SIZE
сообщение сработало.
Вы можете проверить, как DirectXTK делает это здесь:
https://directxtk.codeplex.com/