gpt4 book ai didi

c++ - 粒子系统 : particle generation

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:06 26 4
gpt4 key购买 nike

我有一个系统可以从源中生成粒子并更新它们的位置。目前,我在 OpenGL 中编写了一个程序,它调用我的 GenerateParticles(...)UpdateParticles(...) 并显示我的输出。我希望我的系统具备的一项功能是能够每秒生成 n 个粒子。在我的 GenerateParticles(...)UpdateParticles(...) 函数中,我接受了 2 个重要参数:current_timedelta_time 。在 UpdateParticles(...) 中,我根据以下公式更新粒子的位置:new_pos = curr_pos + delta_time*particle_vector。我如何使用这些参数和全局变量(或其他机制)每秒产生 n 个粒子?

最佳答案

你需要小心,创建粒子的天真方法会让你为较低的 n 值创建分数粒子(可能不是你想要的)。而是创建一个累加器变量,该变量每帧与您的 delta_time 值相加。每帧检查它以查看创建该帧需要多少粒子并减去适当的数量:

void GenerateParticles(double delta_time) {
accumulator += delta_time;
while (accumulator > 1.0 / particles_per_second) {
CreateParticle(...);
accumulator -= 1.0 / particles_per_second;
}
}

确保设置一些限制,这样如果时间增量很大,您就不会同时创建一百万个粒子。

关于c++ - 粒子系统 : particle generation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com