Direct3D 如何获取后台缓存表面的数据 并拷贝至内存

奔跑的大象 2017-04-05 06:21:34
先上一段代码
 
//不使用交换链:
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数据应该是一个点阵图),交由其它方法去处理这个数据.不知如何操作,有哪位仁兄知道如何处理,还请指教,在下先谢过了。
...全文
430 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
IONPhantom 2018-11-11
  • 打赏
  • 举报
回复
BackBuffer不能直接读取,需要创建一个BackBuffer等大的 Pool 为 Managed 的 Texture,然后把BackBuffer的内容CopyRect到Texture中,然后对Texture 进行 Lock 就可以了
Poopaye 2017-04-05
  • 打赏
  • 举报
回复
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();

456

社区成员

发帖
与我相关
我的任务
社区描述
其它游戏引擎
社区管理员
  • 其它游戏引擎社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧