实例化的基本原理

引言:
     最近刚好有个项目要用到这个技术,就学习了下DXSDK的Sample里面的Instancing10。
     实例化的技术是利用多个顶点缓冲区有效的合并,减少Draw Call的次数,从而有效的提高程序的性能。实例化比较适合于相同物体的重复渲染,例如粒子系统,草被模拟等等。
     本文实现了一个非常简单,甚至简陋的实例化的Demo。虽然Demo非常简单,但是实例化的每个必要的元素都已经被体现出来了。相对于Dx的Sample而言简单的多,不过同样可以把这个技术简单解释清楚。

正文:
     实例化适合于相同物体的反复渲染,例如草,粒子系统等。传统的渲染方法中,相同物体由于一些细节不同,例如位置,颜色等信息,使得Draw Call被迫调用多次。对于很小的元素,例如草,可能视野里面会有上万根草,那么如果仅仅因为纹理,方向甚至位置不同,就必须调用上万次DrawCall,从而严重降低了程序的性能。利用实例化技术,虽然这些Mesh在一些简单的细节上有不同,但是大体上还是一致的,所以可以仅仅用一个Draw Call就可以把所有的Mesh渲染出来,这样节省了CPU与GPU之间的带宽,非常高效。
     下面是这次Demo的截图:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值