首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保存多个实例数据的最佳方式

保存多个实例数据的最佳方式
EN

Stack Overflow用户
提问于 2018-03-15 05:14:36
回答 1查看 92关注 0票数 0

我有一个粒子系统,为此我渲染(例如,对于一个粒子效果) 100个带有纹理的四边形。如果我添加几个粒子效果,它会滞后,因为每个粒子都有自己的velicity (2f向量),位置(3f vec),等等。(矢量来自LwJGL)

因此,每个实例意味着大约5或6种数据类型。现在我的问题是:

有没有办法让它变得更好,这样不是每个实例都有5个新向量?(我知道,还有许多其他更好的方法来创建粒子系统,但我选择的方法很简单,我可以练习“性能提升”。

EN

回答 1

Stack Overflow用户

发布于 2018-03-19 15:46:57

好的,那么,我将参考这个code,您可能会从中获得灵感。

我还假设你至少有GL 3.3个人资料。

理论上,最好的优化方法是像camera一样,在图形处理器上移动Map<ParticleTexture, List<Particle>> particles (使用纹理图集),只上传每帧变化的数据。但这并不是一步就能完成的,所以我建议你通过在gpu上一次移动一件事情来一步一步地修改你目前的算法。

一些观察结果:

  • prepare()finishRendering()中,第i个VertexAttribArray的启用是vao的一部分,如果您绑定/解绑vao,就足够了。glEnableVertexAttribArrayglDisableVertexAttribArray可以被移除,使用统一的缓冲区,而不是所有那些单一的alone.
  • loader.updateVbo() is
  • expensive,它在复制数据之前每render创建一个FloatBuffer并清除缓冲区。您应该只分配一次float []FloatBuffer,避免使用glBufferData

,重用它并简单地调用glBufferSubData

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49287736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档