Я надеюсь, что это простой ответ на простой вопрос, на который я не могу найти ответ.
Как получить доступ к переднему буферу в Directx 11 / DXGI? Я обнаружил, что в Directx 9 вы можете использовать GetFrontBufferData () и вы можете использовать GetBuffer () в Directx 11, чтобы получить доступ к буферу, но с этим есть проблемы. В обратном буфере нет вычислений, которые выполняет передний буфер.
Так что мне было интересно, есть ли что-то, что мне не хватает.
Я мог бы попытаться использовать GetDisplaySurfaceData, и если я что-то не так понял, это не сработает, потому что я не всегда в полноэкранном режиме.
Редактировать: Может кто-нибудь дать мне знать, как GetBuffer работает в SwapChain для Directx 11. Как я читал, сглаживание происходит только в переднем буфере, а не в обратном буфере. Является ли 0 первым буфером? (Microsoft заявляет, что вы можете использовать только 0 в некоторых случаях.)
Можно ли вообще получить Front Buffer в Directx 11?
Большое спасибо,
Вам нужно использовать IDXGISwapChain::GetBuffer
API для извлечения поверхности цепочки обмена (используйте uuid ID3D11Texture2D
для типа результата).
Теперь буферы цепочки подкачки не отображаются, поэтому вам нужно скопировать их в промежуточный ресурс.
ID3D11Texture2D::GetDesc
получить описание поверхностиD3D11_USAGE_STAGING
использование и флаг доступа процессора D3D11_CPU_ACCESS_READ
ID3D11Device::CreateTexture2D
ID3D11DeviceContext::CopyResource
Теперь у вас есть ID3D11Texture2D
с содержимым буфера цепочки подкачки, который позволяет вам использовать ID3D11DeviceContext::Map
API для чтения его на процессоре
Других решений пока нет …