如何在Android上的OpenGL ES2中使用着色器控制粒子位置

时间:2011-05-25 01:59:48

标签: android opengl-es opengl-es-2.0

我想在Android上绘制粒子系统,粒子从指定点连续流动。 没有着色器我可以通过检查粒子的寿命来获得它。如果生命为零,则将位置重置为中心。

如何使用着色器实现相同的功能? 我使用生命周期变量来跟踪粒子是否存活。 一旦粒子死了,我想重新定位指定点周围的粒子。 这个生命周期对于每个粒子都是随机的, 有什么方法可以用着色器实现这一点吗?

让我的问题易于理解,例如我想用Shader实现 NeHe第19课 (请参阅第19课的DrawGLScene)....

我的工作的完整代码可以在下面找到以供参考

1)No Shaders

2)With Shaders

2 个答案:

答案 0 :(得分:2)

Thanx所有人,

我在争取总共sat'day之后找到了解决方案......

现在我正在基于时间

在顶点着色器中进行所有计算

我正在计算粒子死亡的时间 和当前时间的mod 将给出修改后的时间框架......

基本上每个粒子都会再次终身生存

代码可以在 google code directory

坦克一个人试图解决我的问题

答案 1 :(得分:0)

您必须在每次绘制时更新Draw函数中的分词LifeTime,然后将其作为“GLES20.glVertexAttribPointer”以attribute float a_lifetime;传递给它。

查看此来源SOURCE