update velocities and position of particle system by rendering quad
<p>Implementing GPU-based particle system using the algorithm in this paper:
<a href="http://www.gamasutra.com/view/feature/130535/building_a_millionparticle_system.php?print=1" rel="nofollow noreferrer">http://www.gamasutra.com/view/feature/130535/building_a_millionparticle_system.php?print=1</a></p>

<p>There are two things i can't understand:</p>

<ol>
<li><strong>Why use a stack or a heap to store available particle index?</strong>
If a particle dead at time t, then it will start its life from zero at time t+1. There is a parameter N to control the number of particles on the screen. If I can reuse all particles, why do I care all the index of available particle and even use a heap to store it?</li>
<li>To update velocities and position, it said, "The actual simulation is implemented in a fragment shader. The shader is executed for each pixel of the render target by rendering a screen-sized quad...."  If I want the particles to be drawn as points, do I need to change the quad to points? <strong>Why quad?</strong> How can it draw for points?</li>
</ol>

<p>. </p>