201112 Instancing draw

原理:有些时候,我们需要在场景中渲染大量的重复的物体,比如体育场中的观众,森林里面的树木等等,这些物体具有相似的形状,比如很多树木,只是位置不同,或者贴图不同而已,如果重复渲染这些树木,用billboard技术,n棵树,就要输入n*4个顶点,在树木很多的时候,这也是比不小的开销,因为每次都要在system memory和gpu之间传输数据。在顶点buffer进入渲染管道的时候,并不是直接进行渲染,而是进入一个IA阶段。正是因为这个原因,才多了一次对顶点进行二次加工的机会。


实例技术的主要实现方式:定义一个顶点缓冲,然后再定义第二个缓冲,称作实例缓冲,只记录物体变化的信息,比如改变位置的信息等等。这样只需传入少量的顶点就可以有效的渲染大量的物体。这种方式无法减少被渲染的顶点的数量,但是可以降低带宽的压力,尤其是在绘制大量重复场景的时候具有得天独厚的优势。


你可能感兴趣的:(201112 Instancing draw)