DirectX - есть ли аналог поверхности DirectDraw Flip()?

Я создаю приложение, которое рисует анаглиф (стереоизображение) на экране 200 Гц на основе двух предоставленных изображений (НЕ 3D-модель). Так что скорость целостности перерисовки очень важна. Я достиг лучших результатов с поверхностями DirectDraw и их Flip() (переключение изображения текущей поверхности на вторичное):

(void) lpddsPrimary->Flip(nullptr, DDFLIP_WAIT);

Но DirectDraw очень устарел, и я ищу способ переопределить эту функциональность на основе современных библиотек DirectX. Но я действительно не хочу создавать четырехугольник, рисовать картинку в виде текстуры, вычислять матрицы трехмерной проекции только для вывода двумерных изображений.

Я был бы очень благодарен за любой фрагмент того, как это можно сделать с помощью DirectX. Заранее спасибо.

1 ответ

Решение

Для ваших целей вы можете использовать DXGI и полностью избегать D3D. Вы не говорите, как вы получаете данные в резервный буфер, но DXGI позволяет вам создавать цепочку подкачки, переворачивать ее (присутствует) и получать доступ к поверхностям (например, блокировать их - теперь это называется карта). Для 3D вам нужны версии "1", например, DXGISwapChain1. См. http://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx.

Обратите внимание, что DXGISwapChain1 является подклассом DXGISwapChain, и некоторые жизненно важные методы, такие как GetBuffer, находятся в базовом интерфейсе.

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