Direct3d / C # - размытие области под прямоугольником, нарисованным на спрайте - PullRequest
1 голос
/ 09 октября 2009

Есть идеи, как это сделать? Я рисую прямоугольник, который должен быть полупрозрачным окном. Мне удалось сделать прозрачность, нарисовав полупрозрачную текстуру, но я также хочу размыть все, что находится под окном.

Обычно (например, используя GDI) я бы создал растровое изображение области, размыл его и закрасил как фон моего окна. С Direct3D я даже не знаю, как получить область с тем, что уже отрисовано на нем. Или даже может быть другой подход, не так ли? Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Это требует наличия вашего буфера в качестве текстуры. Затем вы можете сделать рендеринг всего объекта НОВОЙ текстурой и размыть соответствующую часть, прежде чем наложить текстуру на новую панель.

Edit: AFAIK, вы не можете использовать функцию Draw внутри шейдера. Вам нужно будет написать свой собственный рендерер спрайтов. Begin и Draw устанавливают целую загрузку состояний, которые нарушат использование вершинного шейдера.

1 голос
/ 09 октября 2009

Способ D3D - использовать пиксельный шейдер, чтобы «размыть» область под прямоугольником.

Эта ссылка показывает, как использовать пиксельный шейдер в C #.
А у этой ссылки есть пиксельный шейдер гассовского размытия.

...