DirectX 11/Windows Forms: рисовать поверх визуализированной сцены

Мне трудно найти детали порядка прорисовки приложения DirectX 11 при визуализации в форме Windows. Я знаю, что могу назначить SwapChain сделать для обработчика элемента управления (например, панели), что я уже сделал. Вопрос здесь более сфокусирован на том, чтобы иметь возможность рисовать контент, отображаемый через DirectX, в одном и том же элементе управления. Я уже знаю, что могу добавить элементы управления на панель, и они будут закрашивать отображаемый контент. Я пытался использовать Paint Событие для панели и выполнение простой розыгрыша:

private void panel1_Paint(object sender, PaintEventArgs e) {
    using (Pen p = new Pen(Brushes.Red))
        e.Graphics.FillEllipse(p, new Rectangle(0, 0, 250, 250));
}

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

Может быть, мне придется пройти долгий путь?

Обновить

Я нашел пост в MSDN, который не полностью отвечает на поставленный вопрос, но помогает понять, а также проливает свет на альтернативный маршрут, который, по-видимому, требует выполнения в конце метода рендеринга для моего движка (что имеет смысл, поскольку рендеринг обычно следует системе FIFO).

Вы можете иметь GDI(+) вызовы поверх DX рендера. Устройство d3d может возвращать графику g, подходящую для вызовов gdi. По крайней мере, я сделал это в оконном режиме.

Microsoft.DirectX.Direct3D.Surface bb = device.GetBackBuffer(0, 0);
System.Drawing.Graphics g = bb.GetGraphics();
g.DrawRectangle(...); // or whatever
bb.ReleaseGraphics();
bb.Dispose();

Кроме того, я не вижу, что мешает кому-то добавлять элементы управления на панель, используемую в качестве панели DX.

Уточненный вопрос

Мой оригинальный вопрос, однако, все еще остается. Кто-нибудь знает, каков порядок прорисовки между Windows Forms и DirectX 11? Кто-нибудь знает о событии, которое можно использовать как часть этого порядка для рисования поверх визуализируемого контента?

0 ответов

Другие вопросы по тегам