我必须用 C# 在粒子系统上编写程序,并且我正在使用 Visual Studio 2010。我不能使用任何像 OpenGl 这样的库,......我只能使用 C# 中的 Graphisc 库。我试图阅读一些教程和讲座,但我仍然不知道如何实现它。
谁能帮我理解我应该如何分解我的问题?或者指导我一些有用的教程?这对我来说是新的,我有点卡住了。
我的任务:
从点发生器对一个简单的间歇泉形状的发光粒子进行编程,将粒子视为不同颜色的点,在平行投影中在黑色背景上的单个轨道上移动。
我必须用 C# 在粒子系统上编写程序,并且我正在使用 Visual Studio 2010。我不能使用任何像 OpenGl 这样的库,......我只能使用 C# 中的 Graphisc 库。我试图阅读一些教程和讲座,但我仍然不知道如何实现它。
谁能帮我理解我应该如何分解我的问题?或者指导我一些有用的教程?这对我来说是新的,我有点卡住了。
我的任务:
从点发生器对一个简单的间歇泉形状的发光粒子进行编程,将粒子视为不同颜色的点,在平行投影中在黑色背景上的单个轨道上移动。
查找,BackgroundWorker最好RenderTargetBitmap在 WPF 中执行此操作
伪代码
backgroundWorker()
{
while(isRunning)
{
update()
draw()
}
}
update()
{
for each all particles
{
update gravity and/or relativity to other particles
}
}
draw()
{
clear bitmap
for each all particles
{
draw your particle
}
set it to your container
}
这是基于游戏循环
虽然不是一个完整的答案,但如果这是我的任务,我将如何解决这个问题:
Particle可以存储其当前状态(位置、速度、加速度)并且可以移动(即SetPosition... SetVelocity)的类World表示 3 维空间的类并跟踪其中的所有粒子。World它将了解物理定律,并负责在粒子当前状态下移动它们。Particle具有相同初始起始位置但随机初始加速度向量的 s。将那些Particles 添加到World. 从那时起,他们将World自动更新他们的位置。World图形方式表示其所有内容Particles。编辑:第 7 步将是“循环运行第 6 步”。noHDD 提供的循环代码是一个非常好的基础框架:不断update的世界状态,然后draw是结果。