OpenGL 入门 21:实例化

一、实例化

可以想象一个pubg草地场景。这些草的模型通常是由几个简单的三角形组成的,然后通过一定的旋转平移就可实现这样的一个草地场景。

对于GPU来说,绘制一个草模型十分简单,几乎瞬间完成。但是如何通过一个个Drawcall去绘制每颗草,那么就会因为绘制调用过多而达到性能瓶颈。调用glDrawArrays或glDrawElements函数告诉GPU去绘制你的顶点数据会消耗更多的性能,因为OpenGL在绘制顶点数据之前需要做很多准备工作(比如告诉GPU该从哪个缓冲读取数据,从哪寻找顶点属性,而且这些都是在相对缓慢的CPU到GPU总线(CPU to GPU Bus)上进行的)。所以,即便渲染顶点非常快,命令GPU去渲染却未必。

所以我们希望使用一个Drawcall就能够绘制出整个草地,就让同一批数据绘制出多个物体。这就是实例化(Instancing)

二、uniform数组

如果想使用实例化渲染,我们只需要将glDrawArraysglDrawElements的渲染调用分别改为glDrawArraysInstancedglDrawElementsInstanced就可以了。这些渲染函数的实例化版本需要一个额外的参数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值