2012-01-16 1 views
1

Когда я использую StencilBuffer во время операций рисования для рендеринга целей, есть ли способ, который я могу видеть во время отладки, что содержит буфер шаблонов? Сейчас я ищу несколько часов, и либо я пропущу что-то общее, я не могу найти способ взглянуть на эту таблицу.(C#) XNA 4.0 Доступ к StencilBuffer

В GraphicsDevice в XNA 3.1 было свойство DepthStencilBuffer, но его больше нет. Теперь мы скажем, хотим ли мы использовать Buffer Stencil, когда мы создаем целевые объекты Render, да, но как я могу получить доступ к буферу Stencil после этого, поэтому я могу видеть, есть ли у меня значения в буфере Stencil, который я ожидаю?

веселит Лукас

ответ

0

Я бы оставить комментарий для этого нормально, но у меня не хватает респ для этого еще ...

Я рекомендую прочитать эту страницу: http://blogs.msdn.com/b/shawnhar/archive/2010/03/26/rendertarget-changes-in-xna-game-studio-4-0.aspx

Shawn Hargreaves объясняет, что использование буферов Stencil незначительно и может быть выполнено с использованием других методов, которые дают схожую производительность.

Одна из цитат из этой страницы:

Вопрос:

Для глубины буферов, что о ситуации, такие как:

1) Глубина предварительного прохода + normalss к цветовому каналу

2) другие материалы ... (например, АО)

3) визуализируйте твердые объекты с использованием буфера глубины от ранее и новой цели рендеринга. (Также читает такие вещи, как АО)

4) использовать буфер глубины снова для другого прохода (например, объемный туман)

Ответ:

Самое большое ограничение нового API является то, что вы не можете поделиться единый буфер глубины через несколько разных rendertargets. Тем не менее, как правило, можно достичь такой архитектуры рендеринга (в Windows, в любом случае), просто упорядочив вещи, чтобы в любое время, когда вы хотите повторно использовать буфер глубины, вы рисуете до той же rendertarget.

Например, классическая отсроченная оптимизация затенения использования глубины/трафарета для отбраковки тома полностью выполнима: вам просто нужно организовать операции буфера, чтобы эти проходы света были выполнены в ту же самую rendertarget, которая была привязана по индексу # 0 во время первоначальной рендеринга сцены.