OpenGL ES粒子发生器

http://www.iphone-geek.cn/%E7%BC%96%E7%A8%8B/opengl-es%E7%B2%92%E5%AD%90%E5%8F%91%E7%94%9F%E5%99%A8

译者注:此代码虽然有这样那样的问题,但仍然值得参考。

IMG_0038

我在360 iDev会议中汇总了粒子发生器的代码。由于我又要开始进行有收入的工作所以我必须将之处之高阁了,但我准备在这里分享给有兴趣者。

IMG_0020

首先,我要说我并不是一个OpenGL的专家,我撰写此文能够帮助我更好地学习OpenGL 和粒子系统,所以可以肯定还有很多地方需要改进。

IMG_0038

其次,此代码还有许多bug,并不适用于最终产品。最重要的一个bug是试图释放粒子时造成的死循环。粒子内存没有被释放,它不断被重用。有两个链 接表,一个用于保存可见的粒子,另一个保存不再可见的粒子。当一个粒子生存期到达时,它将被从一个列表移动到另一个。当需要一个新的粒子时,就从列表中提 取一个。此方法可以避免不断的内存分配和释放的开销 。但是,当粒子发射后,我需要一个选项来释放内存,现在它会造成死循环。

IMG_0005

第三,示例程序将所有的发生器放入一个数组中。当你轻触屏幕时,当前发生器会停止发射,下一个发生器开始启动。当最后一个发生器结束时,第一个发生 器循环启动。此时,会遇到pthread锁竞争问题,两个线程会等待另一个线程,引起程序锁住。由于我并非手工建立线程,所以跟踪此问题可能有相当的难 度。

IMG_0004

可在Google Code project 下载 。如果你不想使用subversion,你也可以直接下载zip文件Particles_03_06_2008 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值