2015-12-10 2 views
1

Я пытаюсь создать редактор уровней (или, вообще, некоторые инструменты для создания таких активов, как материалы), и у меня уже есть рендеринг сцены.C++/DirectX 'level editor'

Моя идея заключается в том, чтобы иметь другое окно для каждого вида опции редактирования, т.е. главного окна на уровне окна для материалов, окна для модели/анимация просмотр и т.п.

Мой вопрос, я должен создать новый swapChain/renderTargetView/depthBuffer/stencilView для каждого окна, чтобы я мог визуализировать по-разному сцены для каждого окна? (Я использую все ручки окна, чтобы сделать все это)

В настоящее время я пытаюсь это сделать, но кажется странным, что нужно продолжать переключать буфер визуализации/просмотра/глубины, и я не уверен, правильный метод.

ответ

1

Если они на самом деле являются отдельными окнами, то каждому из них потребуется цепочка подкачки и др., Иначе вы не сможете их визуализировать.

+0

О, хорошо, и если бы они не были отдельными окнами, мне пришлось бы использовать несколько целей рендеринга в качестве разных частей бэкбуфера? Кроме того, существуют ли какие-либо тяжелые эксплуатационные издержки при изменении цели рендеринга и вызов swapchain-> present для разных сцен в кадре? Я спрашиваю об этом, потому что, когда я использовал XNA, я обнаружил, что многие вызовы запуска/завершения spritebatch повлияли на производительность. –

+0

@DomW Не эксперт в нескольких окнах, поэтому не могу сказать точно. В XNA spritebatches имеют довольно высокую стоимость, потому что они переключают тексты, координаты буферов, сообщают базовую систему для рендеринга и т. Д. Я бы предположил, что * несколько цепочек подкачки не будут иметь такую ​​проблему, но единственный способ быть уверенным это испытание. –

+0

Вы можете использовать несколько цепочек подкачки и т. Д., Или вы можете разделить одну цепочку подкачки с помощью видовых экранов. Несколько цепочек подкачки, вероятно, сделают ваш код более простым, поэтому предпочтите. Что касается производительности, это не должно иметь никакого значения для нескольких окон. Если у вас есть тысячи окон, каждый со своей собственной цепочкой подкачки, то у вас могут быть проблемы, потому что это будет очень нетипичное использование драйверов. – legalize