簡體   English   中英

在不使用DirectX(d3dx9_43.dll)的情況下將表面保存到文件

[英]Save surface to file without DirectX(d3dx9_43.dll)

我制作了一個需要截圖的程序,我使用GetFrontBufferDataD3DXSaveSurfaceToFile 但是現在我正面臨麻煩。 D3DXSaveSurfaceToFile使用d3dx9_43.dll,該文件無法進行靜態鏈接,並且在沒有DirectX的PC上程序無法運行。 如何僅使用D3D節省表面?

GetFrontBufferData您提供了一個指向IDirect3DSurface9的指針。 調用IDirect3DSurface9::GetDesc將為您提供D3DSURFACE_DESC ,描述圖像數據。 將其保存到文件中最重要的是FormatWidthHeight成員。 然后,您可以調用IDirect3DSurface9::LockRect以獲取實際數據。 該函數的輸出是D3DLOCKED_RECT ,它在pBits成員中包含圖像數據。 請注意,圖像數據可能未緊緊包裝,您必須考慮D3DLOCKED_RECTPitch成員。 然后,您可以使用任何靜態可鏈接圖像庫(例如DevIL)將圖像寫出到磁盤上,或使用自己的圖像寫入器(編寫BMP / TGA非常容易)。

或者,您可以只在目標計算機上安裝適當的DirectX運行時,這可能會容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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