21.1基于任务队列的多线程渲染


## 21.1 基于任务队列的多线程渲染 上一节测试了GLFW对多线程的支持,证实了在单独子线程调用OpenGL API渲染是可行的。 那么这一节就来对其进行细化,将渲染三角形这一目标,拆分多个子任务,主线程以命令的形式与渲染线程进行通信。 任务有两种,阻塞性任务和非阻塞性任务。 任务可以拆分为任务命令和任务参数。 案例一 你在蹲坑,发现没有纸了,打电话叫你老婆拿纸,这是一个任务。 任务命令:拿纸 任务参数:无 你是主线程,发出命令。 老婆是渲染线程,接受命令,执行,给你结果。 这是一个阻塞式任务,你(主线程)必须等老婆(渲染线程)执行任务(拿纸),返回结果(给你纸)。 就如下面图中的 命令。 案例二 你在外面闲逛,你老婆打电话过来叫你去买一斤西瓜,这是一个任务。 任务命令:买东西 任务参...

## 21.1 基于任务队列的多线程渲染 上一节测试了GLFW对多线程的支持,证实了在单独子线程调用OpenGL API渲染是可行的。 那么这一节就来对其进行细化,将渲染三角形这一目标,拆分多个子任务,主线程以命令的形式与渲染线程进行通信。 任务有两种,阻塞性任务和非阻塞性任务。 任务可以拆分为任务命令和任务参数。 案例一 你在蹲坑,发现没有纸了,打电话叫你老婆拿纸,这是一个任务。 任务命令:拿纸 任务参数:无 你是主线程,发出命令。 老婆是渲染线程,接受命令,执行,给你结果。 这是一个阻塞式任务,你(主线程)必须等老婆(渲染线程)执行任务(拿纸),返回结果(给你纸)。 就如下面图中的 命令。 案例二 你在外面闲逛,你老婆打电话过来叫你去买一斤西瓜,这是一个任务。 任务命令:买东西 任务参数有2个:物品:西瓜 重量:一斤 老婆是主线程,发出命令并带参数。 你是渲染线程,接受命令,解析参数,执行。 买西瓜是比较复杂的操作,要去多个店里询问,比价,拿西瓜,称重,最后付款,才算完成了买西瓜这个任务。 老婆(主线程)不管这些步骤,她只要发命令,然后等结果。 这是一个非阻塞任务,老婆不会一直等...

发布者: 作者: 转发
评论区 (0)
U