Проблема взаимодействия WPF-DirectX (D3DImage) - PullRequest
4 голосов
/ 29 января 2011

Я пишу видео приложение, использующее D3DImage.Кадры взяты из памяти и отображаются в виде текстур в собственном коде с помощью DirectX9, наконец, с помощью D3DImage для графического интерфейса WPF.Вверху у меня есть несколько оверлеев, созданных с помощью среды рисования WPF (текст, фигуры и т. Д.).До этого момента он работает как шарм.Теперь я хотел бы закодировать составное изображение из моего основного нативного кода C ++.Видео имеет формат 640x480 BGR, 25 кадров в секунду и должно отображаться и кодироваться параллельно, также на более старом оборудовании с версиями Windows вплоть до XP / SP3.

Проблема в том, что я не могу найти документацию, описывающую процесс компоновки между WPF и D3DImage.Они «смешиваются» в некотором смысле, но в чем смысл этого?И возможно ли получить дескриптор WPF-части чертежа или даже составного изображения в моем родном коде C ++?

ps: я также открыт для управляемых решений, но до сих пор не нашел много производительности.

1 Ответ

2 голосов
/ 03 февраля 2011

Существует глобальный статический метод, называемый «CompositionTarget.Rendering». Добавьте к этому событие, и каждый раз, когда WPF рендерит, этот метод будет вызываться до того, как WPF будет представлен (хотя FPS может отличаться). Так что просто обновил ваш renderTarget соответственно. Возможно, есть лучший способ, но я не знаю об этом.

ПРИМЕЧАНИЕ :: Также для D3DImage в WindowsXP вы используете устройство D3D9 с блокируемой renderTarget, в то время как в Vista / 7 вы используете устройство D3D9Ex с неблокируемой renderTarget. Просто записка.

...