您当前的位置: 首页 >  Jave.Lin unity

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

Jave.Lin 发布时间:2021-02-23 15:10:44 ,浏览量:4

在制作 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 的场景优化 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

Jave.Lin

暂无认证

  • 4浏览

    0关注

    546博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0521s