![](/img/trans.png)
[英]Missing DLL (d3dx11d_43.dll) while debugging DirectX 11 program
[英]Save surface to file without DirectX(d3dx9_43.dll)
我制作了一個需要截圖的程序,我使用GetFrontBufferData
和D3DXSaveSurfaceToFile
。 但是現在我正面臨麻煩。 D3DXSaveSurfaceToFile
使用d3dx9_43.dll,該文件無法進行靜態鏈接,並且在沒有DirectX的PC上程序無法運行。 如何僅使用D3D節省表面?
GetFrontBufferData
您提供了一個指向IDirect3DSurface9
的指針。 調用IDirect3DSurface9::GetDesc
將為您提供D3DSURFACE_DESC
,描述圖像數據。 將其保存到文件中最重要的是Format
, Width
和Height
成員。 然后,您可以調用IDirect3DSurface9::LockRect
以獲取實際數據。 該函數的輸出是D3DLOCKED_RECT
,它在pBits
成員中包含圖像數據。 請注意,圖像數據可能未緊緊包裝,您必須考慮D3DLOCKED_RECT
的Pitch
成員。 然后,您可以使用任何靜態可鏈接圖像庫(例如DevIL)將圖像寫出到磁盤上,或使用自己的圖像寫入器(編寫BMP / TGA非常容易)。
或者,您可以只在目標計算機上安裝適當的DirectX運行時,這可能會容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.