Unity - Graphics.DrawMesh - 黑盒测试内部自带剔除

在制作 GPU Instancing 优化时,顺手制作了:在 Unity 的 SystemInfo.supportsInstancing == false 时的普通绘制:Graphics.DrawMesh

代码如下:
在这里插入图片描述

在这里插入图片描述

写了个 四叉树剔除,可以看到上图中 蓝色的对象(可以绘制的对象,有两个,因为我将可绘制的显示为蓝色,否则不是蓝色,如:绿色)
在这里插入图片描述

在上图的 监视1(英文版叫:Watch1)中显示了 info.validatedInstCount == 2

再结合上面的代码,在循环中我们调用了两次:Graphics.DrawMesh 如果该 API 内部没有剔除的话,那么,用一些分析工具是可以看到会有两次 Draw XXX 的 API 的,但如果只有一次 DrawXXX ,说明 Graphics.DrawMesh 内部作用剔除的功能(因为:虽然我们手动调用两次 Draw API,单是有一个不是视锥范围内,如果 unity 的 DrawMesh API 内部做了剔除的话,那么其中一个不在视锥内的肯定不会被绘制)

如下图,下面是绘制了一棵树
在这里插入图片描述

然后我用 RenderDoc 来分析结果,查看到:确实调用了一次ID3D11DeviceContext::DrawIndexed API
在这里插入图片描述


后续有机会,我再分享一个:四叉树 + 视锥剔除 + Instancing 的场景优化
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值