OBS D3D9Capture 思路
2016-06-02 00:00
323 查看
init(D3D线程):
CreateOffscreenPlainSurface 创建copy_surface
copy_surface->LockRect 取D3DLOCKED_RECT,得到Pitch,最后UnlockRect
CreateRenderTarget创建一个无抗锯齿RT render_target
CreateQuery D3DQUERYTYPE_EVENT 创建查询事件query
capture(D3D线程):
GetRenderTarget取0号RT backbuffer
判断query是否发布(issued_queries == true?)
query->GetData判断事件是否完成(hres == S_OK?)
从copy_surface->LockRect以只读形式取出D3DLOCKED_RECT
通知copythread进行复制
StretchRect从backbuffer复制到render_target N
如果copy_surfaces在第四步时已经Lock成功,则在此处UnlockRect
GetRenderTargetData从render_targets (N + 1)复制到copy_surfaces(N + 1)
query->Issue(D3DISSUE_END);通知query已经完成,让其转变为无信号状态
设置issued_queries = true
思路:第N帧截取第N-1或第N-2帧的图像
CreateOffscreenPlainSurface 创建copy_surface
copy_surface->LockRect 取D3DLOCKED_RECT,得到Pitch,最后UnlockRect
CreateRenderTarget创建一个无抗锯齿RT render_target
CreateQuery D3DQUERYTYPE_EVENT 创建查询事件query
capture(D3D线程):
GetRenderTarget取0号RT backbuffer
判断query是否发布(issued_queries == true?)
query->GetData判断事件是否完成(hres == S_OK?)
从copy_surface->LockRect以只读形式取出D3DLOCKED_RECT
通知copythread进行复制
StretchRect从backbuffer复制到render_target N
如果copy_surfaces在第四步时已经Lock成功,则在此处UnlockRect
GetRenderTargetData从render_targets (N + 1)复制到copy_surfaces(N + 1)
query->Issue(D3DISSUE_END);通知query已经完成,让其转变为无信号状态
设置issued_queries = true
思路:第N帧截取第N-1或第N-2帧的图像
相关文章推荐
- SUSE 11 SP3安装OBS
- D3D9 编译出错
- D3D9--X File浅析
- obs多开方法
- 关于OBS直播的教程与OBS的设置
- 弄清楚WBS和OBS,项目管理更好做
- obs在windows下的完整编译安装教程
- OBS源码分析之rtmp
- OBS 推流失败后录制功能不可使用的问题
- biliobs 编译问题
- 简练网软考知识点整理-项目组织分解结构OBS
- obs之libx264编码
- obs之lame编码
- OBS Windows 编译
- 流媒体服务器搭建总结
- 未来高大上的OBS游戏直播间的参考样子
- 从斗鱼顶级女主播来思考直播间画面的布局
- OBS bit rate推流比特率最佳设置
- 真正的OBS工作室版本最新消息19.0.2
- OBS Classic经典版已经不再支持