[发明专利]一种多线程渲染的方法和装置有效
申请号: | 201710524166.7 | 申请日: | 2017-06-30 |
公开(公告)号: | CN109213607B | 公开(公告)日: | 2021-07-23 |
发明(设计)人: | 杨亮;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06T1/20 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多线程 渲染 方法 装置 | ||
本发明实施例提供了一种多线程渲染的方法和装置,用于实现提高渲染效率的技术效果。所述方法包括:在入口接口中创建命令执行队列;在所述命令执行队列中创建N个命令列表,N为大于等于2的整数;创建与N个所述命令列表一一对应的N个渲染子线程;通过N个所述渲染子线程向N个所述命令列表提交渲染指令;当N个所述命令列表的渲染指令提交完成后,通过所述命令执行队列执行N个所述命令列表的渲染指令进行渲染。
技术领域
本发明涉及计算机技术领域,尤其涉及一种多线程渲染的方法和装置。
背景技术
直接三维Direct 3D是由微软公司所制定的3D规格界面,与Windows 95和WindowsNT操作系统兼容性好,可绕过图形显示接口直接进行支持接口的各种硬件的底层操作。然而,相关技术在利用Direct 3D进行游戏编程时,通常使用单线程渲染,即所有的绘制指令操作都只能在一个线程中执行。这对于大型的游戏或者实时性要求很高的游戏而言,单线程渲染的效率是达不到期望的。
发明内容
本发明实施例提供了一种多线程渲染的方法和装置,用于实现提高渲染效率的技术效果。
第一方面,本发明提供了一种多线程渲染的方法,包括:
在入口接口中创建命令执行队列;
在所述命令执行队列中创建N个命令列表,N为大于等于2的整数;
创建与N个所述命令列表一一对应的N个渲染子线程;
通过N个所述渲染子线程向N个所述命令列表提交渲染指令;
当N个所述命令列表的渲染指令提交完成后,通过所述命令执行队列执行N个所述命令列表的渲染指令进行渲染。
可选的,所述方法还包括:
在每个所述渲染子线程中创建信号事件;
如果所述渲染子线程未完成向对应的所述命令列表提交所有渲染指令,将所述渲染子线程对应的所述信号事件设置为无信号状态;
如果所述渲染子线程完成向对应的所述命令列表提交所有渲染指令,将所述渲染子线程对应的所述信号事件设置为有信号状态。
可选的,所述方法还包括:
如果所述渲染主线程监测到N个所述信号事件均为所述有信号状态,确定N个所述命令列表的渲染指令提交完成。
可选的,在通过N个所述渲染子线程向N个所述命令列表提交渲染指令之前,所述方法还包括:
获得每个所述命令列表所要对应实现的渲染功能的渲染参数;
基于所述渲染参数生成所述渲染指令。
第二方面,本发明提供了一种多线程渲染的装置,包括:
第一创建模块,用于在入口接口中创建命令执行队列;
第二创建模块,用于在所述命令执行队列中创建N个命令列表,N为大于等于2的整数;
第三创建模块,用于创建与N个所述命令列表一一对应的N个渲染子线程;
提交模块,用于通过N个所述渲染子线程向N个所述命令列表提交渲染指令;
执行模块,用于当N个所述命令列表的渲染指令提交完成后,通过所述命令执行队列执行N个所述命令列表的渲染指令进行渲染。
可选的,所述装置还包括:
第四创建模块,用于在每个所述渲染子线程中创建信号事件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710524166.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据交互的方法和装置
- 下一篇:用于加速的高效操作数多播