Initial repository. This is a tiny project I put together one afternoon in December 2007. Now, almost five years later, I've rediscovered it and wish to fix it up a bit.
Step 1: change the particle graphic.
I don't remember where I got it from (maybe a NeHe OGL tutorial?).
This project will be public now, so the particle shouldn't be stolen.
I used GIMP to make a few test designs and took screenshots.
In the end I stuck with a generic light bubble.
I also moved the test maps to a better location.
Created a sample .ini file for how this application should work.
Created a Code::Blocks project and got the project to compile again.
Boy the code is terrible!! What was I thinking?
Started cutting out unneeded parts and fixing a few things, but
didn't even make a dent.
Removed the convoluted "NMObjects" system completely.
Discovered that individual particles carry their own colors,
which is apparently a forgotten, half-implemented feature.
I reactivated it temporarily. Looks cool! Took screenshots.
Removed the old framerate class, replaced with a single Sleep() call.
Might run slightly slower on older computers, but that's not a problem.
Simplified the particle object (no more getter/setting functions).
Fixed some compiler warnings.
Moved all code into "main.cpp".
Changed nmLoadImage() to LoadAlphaMap() and simplified the code.
(Also fixed a memory leak and sped up the texture load time)
Began adding a simple config file parser.
Finished the config parser / lookup system.
Reorganized main.cpp a little (removed all 'nm' code, etc.)
The config file controls most of the program's settings.
Began editing the particle updating/rendering. Should be a VBO.
Added a new option: additive blending.
Began setting up a VBO for the particles, but realized that I
will need to set up the extension in this environment.
Replaced immediate mode rendering with vertex arrays.
You can compare the two with Glow.exe and Glow_immediate.exe.
Not much of a difference in speed. One huge bottleneck appears to
be the texture coordinate array. Replacing that with a VBO might
speed things up. Will experiment.
Changed texture coordinates to be a VBO.
Only got a tiny performance improvement over immediate mode.
What turned out to be the biggest bottleneck was the texture properties.
GL_NEAREST was too slow. Changing it to any of the MIPMAP rules
(GL_NEAREST_MIPMAP_NEAREST, for example) made it instantly about 10x
faster.
Particle map centers itself in the window.
Added some sanitation of user input. (Can't have negative particles)
Incorporated the particle:width and particle:height options.
Re-enabled uniform color mode as an option.
Added support for the 'particle:maxSpeed' option.
Caps the velocity vector's magnitude to maxSpeed, rather than the
xspeed and yspeed values individually.
Implemented the wrap option. Particles loop across the borders and
pick the fastest path to their destination when space is down.
Also made a new particle map -- more fit for the season!
Edited the speed at which particles move to their destination.
Added support for speedJitter config option.
This means that all of the originally-planned config options
have been implemented.