我試圖寫的代碼一小塊搶後備緩衝到像素陣列。我之前幾乎沒有使用過directX,因爲我更像是一名OpenGL粉絲。 我的願望是實際替換項目中的一些代碼,該代碼使用非常緩慢的BitBlt和DC抓取後緩衝器。
這應該在所有計算機上工作,這就是爲什麼我選擇了DirectX7的。
我的問題是......我該怎麼做?
謝謝。抓住後備緩衝與DirectX 7
0
A
回答
0
我要做的是使用一個輔助類做鎖定/如下解鎖。然後你使用它像這樣:
mBackBuffer->Flip(DDFLIP_WAIT);
{
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ReadLock r(mBackBuffer, ddsd, NULL /* for whole surface */);
if (r)
{
// ddsd.lpSurface contains the void* pointer to the bytes
// ddsd.lPitch contains the byte count of each horizontal line
}
} // ReadLock當它超出範圍解鎖
class ReadLock
{
public:
ReadLock(IDirectDrawSurface7* surface, DDSURFACEDESC2& ddsd, LPRECT pRect = 0) : surface_(surface), mpRect(pRect), hr(S_OK)
{
hr = surface_->Lock(mpRect, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_NOSYSLOCK | DDLOCK_WAIT | DDLOCK_READONLY, 0);
}
HRESULT getResult() const { return hr; }
bool operator!() const { return FAILED(hr); }
operator bool() const { return SUCCEEDED(hr); }
~ReadLock()
{
if (surface_ && SUCCEEDED(hr))
surface_->Unlock(mpRect);
}
private:
HRESULT hr;
RECT* mpRect;
IDirectDrawSurface7* surface_;
};
0
TBH DirectX 9的將與古卡甚至工作。你沒有所有可用的功能,但你有一個SHED加載更多有用的信息。雖然我認爲你可能在Win 95/9/me的支持上有點勉強,並贏得2K。請記住,NT4從來沒有像樣的DirectX版本。
唉我沒有DX7文檔的任何地方方便,但我敢肯定,你可以只得到後緩衝區表面,然後將其鎖定,以獲得數據。儘管您需要牢記抓取後臺緩衝區的速度有多慢,特別是在舊卡上。通過PCI或AGP總線將本地視頻內存中的後臺緩衝區複製到系統內存的速度非常慢。
究竟是你想達到什麼目的?必須有更好的方式來實現你是什麼後做......
相關問題
- 1. DirectX Z緩衝區問題
- 2. Javascript抓住然後承諾
- 3. 複製後備緩衝直接顯存
- 4. Java的後備緩衝和動畫
- 5. DirectX深度緩衝不起作用
- 6. DirectX 11.1禁用深度緩衝區
- 7. DirectX的自動鎖定緩衝
- 8. 如何抓住與preg_match_all
- 9. MYSQL-抓住最後5行後日期
- 10. 緩衝與子
- 11. DirectX:如何初始化錐體的頂點緩衝區和索引緩衝區?
- 12. 播放緩衝 - iOS設備
- 13. 緩衝IO與非緩衝IO
- 14. 無法抓住protractor.promise.defer.reject
- 15. php preg_match抓住
- 16. 嘗試抓住最後的聲明?
- 17. JavaScript抓住document.URL的最後部分?
- 18. 如何獲得在DirectX 9完全透明的後備緩衝沒有Vista的桌面窗口管理器
- 19. 抓住一個PHP的網站,然後遍歷它與jQuery
- 20. 抓住MySQL的信息在PHP與vb.net
- 21. 嘗試與抓住時調用supplyAsync
- 22. 抓住創造者與依賴注入
- 23. 抓住API字典JSON與Python
- 24. 抓住無名(?)的JSON數據與PHP
- 25. 抓住YouTube的視頻ID與Jquery&.match()
- 26. 與緩衝圖像
- 27. SQLiteException不被抓住
- 28. 抓住lat和lng
- 29. 與Windows Phone 7的協議緩衝網絡
- 30. 如何抓住你抓住的元素內部的元素?