我正在使用OpenGL 3.2版并成功创建了一个粒子系统。我使用实例渲染绘制粒子并在实例缓冲区中给出粒子偏移。我使用广告牌来找到粒子的正确旋转。
我目前的问题是,如果我想使用不同类型的不同纹理的粒子,我不确定如何以“好”的方式这样做。我找不到任何关于如何将纹理ID作为顶点数据传递的信息,这是我的第一个想法。我可以传入一个整数并使用if-elseif结构来找到正确的结构,但这似乎不正确。
答案 0 :(得分:2)
OpenGL 3.2支持2D数组纹理。这将是使用整数索引为这些实例化粒子提供不同纹理的最简单方法。这里有一点需要注意,每个纹理应该具有相同的尺寸,但对于粒子来说这可能不是什么大问题。
新版本的GL还支持无绑定纹理(作为ARB扩展),它们可以用于相同的目的,但2D阵列纹理是我个人认为追求的。否则,真正古老的后备将是使用多达16个不同的纹理单元或打包的纹理图集,并修改每个实例的纹理坐标。