簡體   English   中英

如何從Direct3D 11 Texture2D對象中提取位圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM