Я работаю над созданием полноэкранного трехмерного приложения (на основе приложения для отслеживания головы Wi-Fi Джонни Ли ) с некоторыми функциями дополненной реальности, и кажется, что WPF слишком медленный, чтобы рендерить даже простые модели, которые я использую с разумной частотой кадров. Я думаю, что проблема в том, что мне нужно менять вид и проекцию камеры практически на каждом кадре из-за характера приложения (оно использует веб-камеру для отслеживания вашего лица и использует эти данные для перемещения камеры). вокруг и изменить свою перспективу).
Я потратил много времени, пытаясь сузить проблему, и она определенно связана с графикой, а не со скоростью используемого API отслеживания головы. Кроме того, я воссоздал приложение в XNA, и, похоже, там оно работает нормально (28 FPS против 9 в WPF). Наконец, когда я удаляю «стены» или делаю окно намного меньше (скажем, 800 x 600), производительность WPF значительно улучшается, что заставляет меня думать, что узким местом являются графические вычисления.
В результате мне нужно либо найти новый графический интерфейс для работы, либо найти способ сделать WPF намного быстрее для этого приложения. Я в основном смотрю на DirectX и XNA и, возможно, на OpenGL. Любые рекомендации, какие из этих API лучше всего использовать для этого приложения в .NET? Или, альтернативно, есть идеи, что я делаю неправильно в WPF, что замедляет работу?