Directx 11 Передний буфер

Я надеюсь, что это простой ответ на простой вопрос, на который я не могу найти ответ.

Как получить доступ к переднему буферу в Directx 11 / DXGI? Я обнаружил, что в Directx 9 вы можете использовать GetFrontBufferData () и вы можете использовать GetBuffer () в Directx 11, чтобы получить доступ к буферу, но с этим есть проблемы. В обратном буфере нет вычислений, которые выполняет передний буфер.

Так что мне было интересно, есть ли что-то, что мне не хватает.

Я мог бы попытаться использовать GetDisplaySurfaceData, и если я что-то не так понял, это не сработает, потому что я не всегда в полноэкранном режиме.

Редактировать: Может кто-нибудь дать мне знать, как GetBuffer работает в SwapChain для Directx 11. Как я читал, сглаживание происходит только в переднем буфере, а не в обратном буфере. Является ли 0 первым буфером? (Microsoft заявляет, что вы можете использовать только 0 в некоторых случаях.)

Можно ли вообще получить Front Buffer в Directx 11?

Большое спасибо,

2

Решение

Вам нужно использовать IDXGISwapChain::GetBuffer API для извлечения поверхности цепочки обмена (используйте uuid ID3D11Texture2D для типа результата).

Теперь буферы цепочки подкачки не отображаются, поэтому вам нужно скопировать их в промежуточный ресурс.

  • использование ID3D11Texture2D::GetDesc получить описание поверхности
  • Патч с D3D11_USAGE_STAGING использование и флаг доступа процессора D3D11_CPU_ACCESS_READ
  • Создать временную поверхность ID3D11Device::CreateTexture2D
  • Скопировать на подготовительную поверхность ID3D11DeviceContext::CopyResource

Теперь у вас есть ID3D11Texture2D с содержимым буфера цепочки подкачки, который позволяет вам использовать ID3D11DeviceContext::Map API для чтения его на процессоре

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]