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, находятся в базовом интерфейсе.