先上一段代碼
//不使用交換鏈:
IDirect3DSurface9 *pBackBuffer;
// 取得后快取表面
m_pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);
// 將后快取表面保存為檔案(D3DXIFF_*為保存的圖片格式,有bmp,jpg,tga,png,dds等)
D3DXSaveSurfaceToFile(TEXT("C:\\temp.jpg"), D3DXIFF_JPG, pBackBuffer, NULL, NULL);
pBackBuffer->Release();
這一段代碼是將后臺快取表面保存為一張圖片,但我現在需要將后臺快取表面的資料保存到記憶體以BYTE形式的保存(這個BYTE資料應該是一個點陣圖),交由其它方法去處理這個資料.不知如何操作,有哪位仁兄知道如何處理,還請指教,在下先謝過了。
uj5u.com熱心網友回復:
RECT rect;//設定長寬
D3DLOCKED_RECT lockedRect;
pBackBuffer->LockRect(&lockedRect, &rect, 0);
(xxxx*)lockedRect.pBits; //實際資料,具體格式和format有關
//https://msdn.microsoft.com/en-us/library/bb172570(v=vs.85).aspx
pBackBuffer->UnlockRect();
uj5u.com熱心網友回復:
BackBuffer不能直接讀取,需要創建一個BackBuffer等大的 Pool 為 Managed 的 Texture,然后把BackBuffer的內容CopyRect到Texture中,然后對Texture 進行 Lock 就可以了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47453.html
標籤:其它游戲引擎
下一篇:程式員著裝指南
