将目光转移到RenderingThreadMain()函数,这是个任务系统,各种渲染任务在此执行。
1,通过ENQUEUE_RENDER_COMMAND向队列添加渲染任务
可见,有很多种渲染任务



二,查看其定义,
1,

2,查看EnqueueUniqueRenderCommand的定义,有两个,肯定第一个不是了。


从
FRHICommandListImmediate& RHICmdList = GetImmediateCommandList_ForRenderCommand();
可知,渲染县城并非直接向GPU发送命令,而是将渲染命令放入RHI命令列表。由RHI线程不断去除命令,向GPU发送,并阻塞等待结果。此时,虽然此时HI线程阻塞,但是渲染线程依然正常工作,达到异步渲染的效果。
RenderingThreadMain函数是渲染任务的核心,通过ENQUEUE_RENDER_COMMAND添加多种任务到队列。渲染命令不直接发送给GPU,而是存入FRHICommandListImmediate的RHI命令列表,由RHI线程异步处理并发送,实现渲染线程与GPU交互的并行性,即使RHI线程阻塞,渲染线程仍能继续工作。
5196

被折叠的 条评论
为什么被折叠?



