Цель рендеринга для каждой сцены, для переходов

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

Так что я думал. Единственный способ, который я мог придумать для поддержки этого и более сложных переходов, не обрабатывая их в самой сцене, — это цели рендеринга для каждой сцены. Цель рендеринга будет установлена ​​из диспетчера сцен перед вызовом метода рисования. После отрисовки цель рендеринга будет сброшена на цель рендеринга менеджера, а текстура сцены будет отрисована с информацией о текущем переходе. Без очистки текстуры менеджера последуют дополнительные сцены, если их нужно будет отрисовать. Таким образом, вы могли бы делать практически все (с точки зрения перехода), сцены были бы полностью независимы друг от друга, и вам не понадобилась бы ни одна строка кода перехода в реальных сценах. (Для справки, есть различные типы переходов, которые я хотел бы иметь. Не только затухание, но и шейдерные эффекты, перемещение одной сцены, в то время как текущая «отталкивается» и т. д., включая одну или несколько сцен. .)

Ну, это моя теория. Вот мой вопрос: звучит ли это как жизнеспособный план? Это путь? Я читал о проблемах с производительностью при слишком частом переключении целей рендеринга и других проблемах, что является основной причиной, по которой я не решаюсь реализовать это. Но до сих пор я не мог придумать или найти лучшего метода. Хотя я думаю, что это не должно иметь значения, на данный момент меня интересует только 2D (упомянул на всякий случай).


person Mars    schedule 06.07.2012    source источник


Ответы (1)


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

person Ani    schedule 06.07.2012
comment
Что вы имеете в виду во втором предложении? Если у меня есть две видимые сцены, они обе будут нарисованы на своих текстурах, а затем на текстуре менеджера. - person Mars; 06.07.2012
comment
Да, это то, о чем я говорил, хотя композиция может идти прямо в задний буфер без необходимости добавлять еще один рендер-цель размером с экран. - person Ani; 06.07.2012
comment
К сожалению, нет, так как я хочу иметь возможность делать снимки экрана ^^ - person Mars; 06.07.2012