[英]How to extract bitmap out of Direct3D 11 Texture2D object?
我正在使用桌面復制API(C ++),並創建了一個輸出復制對象,並進一步查詢了ID3D11Texture2D對象的接口。
我嘗試使用“ D3DX11SaveTextureToFile”和“ DirectX :: SaveWICTextureToFile”,但它給出了一個錯誤。 我需要從該紋理中提取位圖或像素緩沖區,以便將其另存為圖像。 我嘗試使用子資源和ID3D11DeviceContext :: Map函數提取像素緩沖區,但它似乎為空。 但是context-> Draw()似乎有效。
無論如何,我可以從texture2D對象中提取像素緩沖區/位圖/圖像嗎?
謝謝!
更新:我使用CaptureTexture
中的CaptureTexture
函數解決了此問題。 您可以從生成的ScratchImage
創建HBITMAP
對於從DirectX::SaveWICTextureToFile
獲取E_NOINTERFACE
作為返回代碼的DirectX::SaveWICTextureToFile
,您需要使用以下方法之一初始化COM:
HRESULT hr = CoInitialize(nullptr); // Single threaded
HRESULT hr = CoInitializeEx(nullptr, COINITBASE_MULTITHREADED); // For multithreaded programs
完成后不要忘記調用CoUninialize()
。 這是因為WIC使用COM,並且必須在使用COM之前對其進行初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.