2012-05-28 24 views
1

我想使用OpenGL在C++中启动基本粒子系统。我为此写了一个算法,但我不明白如何启动它。使用OpenGL的C++中的粒子

我面临的问题是我可以打印位置和速度更新,但我不知道如何使用OpenGL直观地显示它。

+0

你尝试过在对所有的颗粒,每个位置抽选四? –

+0

使用点精灵:http://www.informit.com/articles/article.aspx?p=770639&seqNum=7 – fen

回答

4

我希望你尝试的东西在下面什么线:

  • 有一个结构(C++结构或类)来表示一个粒子。该结构包含:

    • 粒子位置(X,Y,Z)
    • 粒子速度(Vx的,VY,1/2)
    • 粒子加速器(AX,AY,AZ)//东西,你威力需要太多..
    • 绘画功能来做绘画的粒子。
  • 拥有这种结构的数组。根据需要初始化速度,位置和加速度。

  • 在一个单独的线程(或在重画事件,用于启动)执行以下操作:

    • 对于每一个粒子(数组中元素)做:

      • 粒子[ index] .velocityX + = particle [index] .acceleration X
      • particle [index] .velocityY + = particle [index] .accelerationY
      • particle [index] .ve locityZ + =粒子[指数] .accelerationZ

      • 粒子[指数] .locationX + =粒子[指数] .velocityX

      • 粒子[指数] .locationY + =粒子[指数] .velocityY
      • 粒子[索引] .locationZ + =粒子[指数] .velocityZ

      //转换为位置和油漆..

      • 使用glTranslated(颗粒[指数] .locationX,particl E [指数] .locationY,粒子[指数] .locationZ)
+0

嗨,大家好,任何人都可以给我例子基本粒子系统使用openGL,或任何链接... – Kalyan

+1

Umm ,我已经放在上面的子弹几乎足以实现一个基本的粒子系统,IMO。向我们展示你所尝试过的,可能是我们可以帮助的。如果你需要一个代码来启动你,谷歌为它;我相信你最终会得到1000个。 :) – SuperSaiyan