TODO
==========
-Change the logger class to use cout instead of printf. Consider how easy variable argument support would be.
-Change all error messages to use the logger class so they get printed to the log file as well.
-Make sure fullscreen works correctly on OSX. Check the book to see how to handle Retina Display.
-Add code to allow for resizing/maximizing the window
-Check the book's "Printing Parameters from the GL Context" to output a bunch of OpenGL context params
-Move some common functions into a Utils class

DONE
==========
-Print a warning if texture images don't have sizes of 2^x
-Fix the texture-mapping code to not flip the texture upside down.

NEW TODO
==========
-Unbind buffers (by binding to 0) once I'm done using them. This will help catch errors faster where I'm using a different buffer than I expect.
-Show the fps in a gui component instead of printing it to the console

NEW DONE
==========
-Move buffer memory allocation code into populateBuffers()
-Go through the large design comment blocks and clean them up. Turn them into documentation for the code that's been written since I wrote the designs.

MAJOR TASKS TODO
==================
-Figure out why rendering doesn't work on the Windows laptop
-Implement lasers

MAJOR TASKS DONE
==================
-Investigate switching to SFML, i.e. create a simple demo of SFML with OpenGL and ImGui
  -The SFML graphics module requires the compatibility profile, which on OSX is only available for OpenGL < 3.0
  -I don't think ImGui would work with SFML
  -When the time comes, maybe just try using the networking and audio components of SFML
