我试图写的代码一小块抢后备缓冲到像素阵列。我之前几乎没有使用过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. 如何抓住你抓住的元素内部的元素?