Образец XNA Bloom - пустой фиолетовый экран - PullRequest
0 голосов
/ 23 февраля 2011

Я поместил два класса Bloom в свой проект из образца Bloom и выполнил те же действия, что и образец, хотя при запуске проекта все, что я сейчас получаю, это пустой фиолетовый экран?

Я не получаю сообщение об ошибке или что-то еще, все, что я сделал, это буквально включил два класса Блума из образца, добавил его в качестве компонента и поместил вызов начала рисования в мою основную функцию рисования, как в примере.У меня есть другие цели рендеринга в моем проекте, но они не обязательно используются сразу.Если я достану вещи с цветами, все будет нормально.Как только я вызываю функцию begindraw (), все, что я получаю, это печально известный пустой фиолетовый экран ...

У кого-нибудь есть идеи, почему я получаю это?

  • Джейми.

1 Ответ

1 голос
/ 23 февраля 2011

Лучший способ диагностировать проблему такого рода - это использовать PIX (в DirectX SDK).

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

Проще говоря, вы не можете рисовать вещи в обратном буфере, переключаться на цель рендеринга, а затем снова переключаться на обратный буфер и ожидать, что нарисованное все еще будет там. По крайней мере, не на XBox 360 - и версия XNA для ПК имитирует это поведение.

Если вы хотите иметь возможность переключиться обратно на буфер заднего хода и оставить его невредимым, вы можете изменить настройку RenderTargetUsage для заднего буфера (или цели рендеринга, в зависимости от способа рендеринга). на PreserveContents, как объясняется в этом сообщении в блоге. Имейте в виду, что на Xbox 360 это огромный удар по производительности.

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

( Ссылка на похожий недавний вопрос / ответ .)

...