游戏引擎遍历游戏场景中的所有的物体,然后得到一个物体的渲染顺序,然后按照顺序提交给GPU来绘制游戏画面出来。每次渲染时,CPU把每次绘制要使用的数据传递给GPU,然后向GPU下达绘制DrawCall指令,GPU接收到指令以后”开机”绘制游戏物体出来。假设我们有100个物体需要渲染,如果分100次提交给GPU,每次GPU渲染一个,完成后再渲染下一个,这样CPU就要向GPU传送数据100次,同时下达100次的渲染命令。如果是这样,CPU提交数据给GPU,下达指令会有额外的开销,GPU每次可以处理很多个面,但是由于每次只送进来一个物体,导致GPU的处理能力没有发挥出来。假设把100个物体一次提交给GPU一起绘制, CPU不用反反复复的给GPU下达指令,重复传送数据,GPU一次开机把100个物体一次处理好,发挥最大的性能。把N个物体合并到一起来提交给GPU,GPU一次绘制,这个过程我们叫做合批。CPU给GPU下达一次渲染指令叫Drawcall。提交绘制一个游戏场景,场景中的物体分几次提交给GPU进行绘制我们叫做批次数目(Batches),又叫Drawcall次数。如果100个物体分100次提交给GPU, Drawcall/批次数目(Batches) 为100, 100个物体分2次提交给GPU,Drawcall/批次数目(Batches) 为2。
网友评论