Почему Direct2D рендеринг цели должны быть воссозданы? - PullRequest
0 голосов
/ 27 августа 2018

Я создаю игровой движок и собираюсь поддерживать как OpenGL, так и Direct2D. Я слышал, что rendertargets может возвращать ошибку EndDraw (), при которой требуется воссоздать каждый ресурс, созданный с его помощью. Мне было интересно, если это происходит часто, я должен обработать эту ошибку и как это происходит. В OpenGL вы не теряете контекст только потому, что так. Итак, что вызывает потерю цели рендеринга, и я должен использовать Direct2D для игр даже с этой проблемой? Заранее спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

В прошлом (читайте DirectX 9 и более ранние версии), когда вы переключали фокус с полноэкранного приложения, обычно происходило потерянное устройство. Затем, во время, когда ваше приложение не было видно, у вас не было графического устройства для рисования. И когда фокус был возвращен к вашему приложению, вам пришлось повторно инициализировать устройство и все ресурсы, которые были созданы на этом устройстве.

Сегодня (DirectX 10 и более поздние версии) это уже не так. Доступ к графическому устройству виртуализирован, поэтому вы сохраняете управление устройством, когда приложение теряет фокус. Однако все еще есть несколько случаев, когда вы можете потерять свое устройство, например, физические изменения в компьютере, сбой и сброс драйвера и т. Д. Таким образом, ситуации, в которых вы теряете свое устройство, очень редки и несколько экстремальны. Вы можете справиться с этими ситуациями, если хотите (и должны, если хотите создать стабильное приложение), но обычный пользователь, скорее всего, не столкнется ни с одной из этих экстремальных ситуаций. Для получения дополнительной информации посмотрите эту статью MSDN .

...