【杂记】OpenGL实例化

实例化是因为每渲染一组顶点(模型的时候) 我们就要绑定一次顶点属性指针以及顶点数据。

当我们绘制多个相同的顶点数据时,可以通过实例化来只绑定一次顶点,而通过传递不同的参数到着色器中来实现绘制多个模型。

第一个方法是:使用uniform,设置一个浮点数vec2位置偏移数组。而通过gl_instanceID,来通过切换实例达到取得偏移数组的不同下标的目的。 注意:必须在DrawArrays的时候用DrawArraysInstance,这样才会按照实例来绘制N次。如果没有位置偏移,就会在同一个位置绘制N次顶点

第二个方法:使用顶点属性,在激活顶点属性指针后,绑定我们需要的顶点缓冲(这样就将对应的数据绑定到了顶点属性,而且不是直接放在传统的VBO中的),再使用gl_divisor函数,确定属性指针的第几个属性是实例属性,以及画几个实例才会切换一次这个属性。

第二个方法好在可以传递更多的数据到着色器。第一个用uniform传递数据量是有限的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值