Designing a reusable particle system
In this section, we're going to write a particle system that will be later used to create pretty much everything in the game—spaceships, bullets, and so on. This is the generic approach used in situations where you have many similar objects on the screen with very little logic for movement and interaction.
This topic will capitalize on the previous chapter's code. In fact, the starfield screensaver from the previous chapter as a whole is a fine example of a particle system; however, it lacks the necessary configurability and cannot be easily repurposed. We're going to change that without significantly altering the GLSL and related code.
Note
It's worth mentioning that the chosen approach—rendering textured quads for each particle—isn't the most optimal in terms of low-level rendering. On the plus side, it's very straightforward, easy to reason about, and compatible with any implementation of OpenGL that supports GLSL at all.
If you choose to learn OpenGL...