Я хочу визуализировать изображение в текстуру, используя ускорение DirectX. Но вместо того, чтобы показывать это изображение на экране, я хочу вернуть это изображение в обычную память в виде растрового изображения, чтобы делать что-либо с результатом. Как перенести часть текстуры в обычную память? Я использую DirectX 11.
Как отрендерить текстуру в DirectX 11 и перенести текстуру в обычную память?
comment
Вы можете найти ту же проблему и решение здесь а>. Вам нужно только использовать версию DirectX 11 вместо 10.
- person enigma   schedule 12.12.2012
comment
почти нет... На самом деле я хочу иметь ДОСТУП к пикселям. D3DX10SaveTextureToFile() делает это, конечно, в фоновом режиме. Но я хочу знать, как сделать это самостоятельно. Я думаю, что это связано с Map/Unmap ресурсов (DX10/DX11), но я не смог найти ничего действительно работающего! :-(
- person Wagner Patriota   schedule 18.12.2012
Ответы (1)
Вы можете использовать отдельную «постановочную» текстуру, которая имеет доступ к процессору для чтения. Затем скопируйте вашу текстуру rendertarget в эту промежуточную текстуру с помощью CopySubresource() или CopyResource() и выполните Map() для этой промежуточной текстуры.
--> http://msdn.microsoft.com/en-us/library/windows/desktop/ff476259(v=vs.85).aspx
person
sandicz
schedule
19.12.2012
О, я видел это решение в комментариях выше... Я использовал это несколько раз, и это работает. В чем проблема с Map/Unmap?
- person sandicz; 19.12.2012
Любые предложения о том, как это сделать в DirectX 12? Кажется, там многое изменилось, связанное с памятью :(
- person Dimitri Podborski; 22.01.2020