Пишу игру, и я бы хотел несколько роликов в середине. В оконном режиме классы DirectShow прекрасно работают и просты в использовании. Но когда игра в полноэкранном режиме, я не могу заставить DirectShow показывать полноэкранный ролик.
По сути, когда у меня инициализировано устройство D3D, я не могу отобразить видео даже с IVideoWindow.put_Fullscreen(true). Я предполагаю, что DirectShow просто не может работать в полноэкранном режиме с устройством D3D.
Итак, я попытался освободить свое D3D-устройство во время воспроизведения кат-сцены и повторно инициализировать его после этого. Кажется, это работает довольно хорошо, но когда DirectShow воспроизводится в полноэкранном режиме, кажется, что он крадет фокус из главного окна моего приложения и не возвращает его после завершения. Затем это приводит к тому, что DirectInput не может снова получить устройство (дает мне код ошибки «Отказано в доступе»). Я попробовал SetForegroundWindow() перед приобретением, но это не решает проблему, так что проблема может быть и не в этом.
Короче говоря, все, что я хочу, это полноэкранный ролик в середине моего приложения D3D. Есть ли предпочтительный способ сделать это? Могу ли я сделать это, настроив вывод DirectShow на основную поверхность D3D? Думаю, это решит те проблемы, которые у меня есть.