2012-03-28 3 views
0

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

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

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

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

+0

Я не мог понять, почему directdraw устарел. Используйте direct3d для этой цели самостоятельно только для функций, которые она предоставляет, но принцип почти такой же ... – Ulterior

ответ

1

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

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

+0

Спасибо! Но как насчет совместимости? Программу необходимо запускать на конечных машинах WinXP. – khaos

+0

Тогда вы не можете использовать современные библиотеки DirectX. –

+0

Так что я вижу, спасибо в любом случае. – khaos

Смежные вопросы