【问题标题】:Particles with different textures in OpenGLOpenGL中具有不同纹理的粒子
【发布时间】:2014-11-13 22:47:57
【问题描述】:

我正在使用 OpenGL 3.2 版并已成功创建粒子系统。我使用实例化渲染绘制我的粒子,并在实例化缓冲区中给出粒子偏移量。我使用广告牌来找到粒子的正确旋转。

我目前的问题是,如果我想使用具有不同纹理的不同类型的粒子,我不确定如何以“好”的方式进行操作。我找不到任何关于如何将纹理 ID 作为顶点数据传递的信息,这是我的第一个想法。我可以传入一个整数并使用 if-elseif 结构来找到正确的结构,但这似乎不对。

【问题讨论】:

  • 纹理图集可以吗?

标签: opengl glsl shader lwjgl


【解决方案1】:

OpenGL 3.2 支持二维数组纹理。这将是使用整数索引为这些实例化粒子提供不同纹理的最简单方法。这里有一个警告,每个纹理应该具有相同的尺寸,但这对于粒子来说可能没什么大不了的。

较新版本的 GL 还支持无绑定纹理(作为 ARB 扩展),它们可以用于相同目的,但我个人会考虑使用 2D 数组纹理。否则,真正过时的后备方案将是使用多达 16 个不同的纹理单元或打包的纹理图集并修改每个实例的纹理坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多