Я пытаюсь сделать одновременно несколько ID3D11RenderTargetView
. Но, похоже, что только первая цель визуализируется:OMSetRenderTargets отображает только первый предоставленный объект
ID3D11RenderTargetView* targets [ 2 ] = { _backbuffer
, _renderToTextureRTV
};
_devcon->OMSetRenderTargets(2, targets, nullptr);
В зависимости от параметра Уточняю первый в моей targets
массиве, будет оказана. Другой целевой вид рендеринга не будет отображаться.
Я создаю свой IDXGISwapChain
с флагом D3D11_CREATE_DEVICE_DEBUG
и не вижу сообщений об ошибках, связанных с этой функцией.
Я могу воспроизвести ту же проблему, если я укажу nullptr
как первый targets
элемент. В этом случае второй элемент не будет отображаться. Но если я укажу nullptr
как второй элемент, первый элемент будет отображаться правильно.
Почему OMSetRenderTargets
только что оценил первый элемент targets
?
Edit:
То, что я на самом деле пытается добиться того, чтобы оказать на BackBuffer и текстуры одновременно. Мне нужно отобразить текстуру, так как я хочу иметь доступ к значениям пикселей из CPU.
Я хочу визуализировать 16-разрядное изображение без знака, поэтому для текстуры я использую DXGI_FORMAT_R16G16B16A16_UNORM
. Для бэкбуфера, мне нужно использовать другой формат, подходящий для отображения на экране, поэтому я использую DXGI_FORMAT_R16G16B16A16_FLOAT
.
По соображениям производительности, я не хочу, чтобы между двумя этими элементами был преобразован элемент, и именно поэтому у меня есть две цели рендеринга.
В вашем пиксельный шейдер, вы oututting ничего SV_Target1 (то есть вторая граница рендер-мишень). – Mrfence97