Очистить один видовой экран в DirectX 10 - PullRequest
1 голос
/ 07 июля 2011

Я готовлюсь к запуску приложения C ++ DirectX 10, которое будет состоять из нескольких «панелей» для отображения различных типов информации. Я имел некоторый успех, экспериментируя с несколькими областями просмотра на одном RenderTargetView. Тем не менее, я не могу найти однозначного ответа относительно того, как очистить одно окно просмотра за раз. Эти панели (видовые окна) в моем приложении будут перекрываться в некоторых областях, поэтому я хотел бы иметь возможность рисовать их «снизу вверх», очищая каждый видовой экран по мере продвижения, чтобы рисунок из нижних панелей не просвечивал на высшие. В DirectX 9 кажется, что существовал метод Clear () объекта устройства, который очищал бы только текущий установленный видовой экран. DirectX 10 использует ClearRenderTargetView (), который очищает всю область рисования, и я не могу найти какой-либо другой параметр, эквивалентный тому, как это делал DirectX 9.

Есть ли способ в DirectX 10 очистить только область просмотра / прямоугольник в области рисования? Один человек предположил, что единственный способ - нарисовать квад в этом пространстве. Кажется, что другой возможностью было бы иметь отдельный RenderTargetView для каждой панели, но я бы хотел этого избежать, так как он требует других избыточных ресурсов, таких как отдельные буферы глубины / трафарета (если это не недоразумение с моей стороны).

Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Я бы порекомендовал использовать одну цель рендеринга для каждого "окна просмотра" и объединять их вместе, используя квадраты для окончательного вида.Я не знаю способа вырезать клир в DX 10.

Кроме того, согласно статье здесь , «массив представлений цели рендеринга может быть передан в ID3D10Device :: OMSetRenderTargets,однако все эти представления цели рендеринга будут соответствовать одному представлению трафарета глубины. "

Надеюсь, это поможет.

0 голосов
/ 20 марта 2012

Не могли бы вы просто создать шейдер вместе с соответствующими настройками смешанного состояния и квадратной сеткой (или другой формой сетки) и использовать его для очистки области, где вы хотите очистить?Я не пробовал это, но думаю, что это можно сделать.

...