Как сопоставить цель рендеринга D3D11On12 с памятью?
Я пытаюсь сопоставить заэкранную цель рендеринга D2D с памятью.
- Цель рендеринга создается как
ID3D12Resource
сD3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET
- Затем прошел через
ID3D11On12Device::CreateWrappedResource()
- Затем превратился в
ID2D1Bitmap1
сID2D1DeviceContext2::CreateBitmapFromDxgiSurface
Приложение использует его с помощью D2D, затем он используется в качестве ресурса пиксельного шейдера в шейдере D3D12, и таким образом я могу проверить правильность содержимого текстуры.
Однако, если я скопирую его в D3D12_HEAP_TYPE_READBACK
ресурс через CopyTextureRegion
, он возвращается как полностью установленный в 0. Код, который я использую, работает для других текстур. Я пробовал послеD3D11DeviceContext
сбрасывается, а также после того, как презентация на экране завершена.
Я также пытался скопировать и сопоставить его в области D2D, но у меня тот же результат. Я чувствую, что этот ресурс в некотором роде особенный, и мне что-то не хватает.
1 ответ
Я исправил эту проблему. Проблема заключалась в том, что я выводил в растровое изображение без поддержки альфа-канала в сочетании с плохими параметрами BlendDesc. Я подтверждаю, что внеэкранные цели рендеринга D3D11On12 работают так же, как и любые другие ресурсы, когда дело доходит до копирования в ресурс для чтения.