Unity Shader 学习笔记(1) DrawCall

44 篇文章 5 订阅
36 篇文章 5 订阅

Unity Shader 学习笔记(1) DrawCall

参考书籍:《Unity Shader 入门精要》
图形管道: 3D数学 学习笔记(6) 图形管道(渲染流水线)


DrawCall

**DrawCall就是一个命令,从CPU发起,GPU接收。这个命令指向一个需要被渲染的图元(primitives)列表,告诉GPU开始进行一个渲染过程。**相当与OpenGL中的glDrawElements命令,DirectX中的DrawIndexedPrimitive命令。

CPU和GPU并行工作

使用一个命令缓冲区(Command Buffer),CPU添加命令,GPU读命令。命令有多种,DrawCall是其中一种,其他命令还有改变渲染状态等。

渲染模型ABC就是DrawCall。改变渲染状态往往更耗时。

在这里插入图片描述

DrawCall数量影响帧率

因为每次调用DrawCall前,CPU都需要给GPU发送很多内容:数据、状态、命令等,需要做很多工作:检查渲染状态等。而GPU的渲染速度往往快于CPU提交命令的速度。如果DrawCall太多,CPU就会把大量时间花在提交DrawCall上,造成CPU过载,而GPU空闲。

减少DrawCall

批处理(Batching)

**即把很多小的DrawCall合并成一个大的DrawCall。**因为合并也是需要时间的,所以更适合静态的物体。对于动态物体进行批处理,则会每一帧都要重新合并再发送,对空间时间都会有影响。

批处理合并的网格需要使用同一种渲染状态。

在这里插入图片描述

开发中注意避免
  1. 避免使用大量很小的网格。如果有,考虑合并。
  2. 避免使用过多材质。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值