TODO ========== -Add code to allow for resizing/maximizing the window - Doesn't seem to be necessary on OSX anymore, check that in works on Window and Linux, including removing the window title bar in fullscreen mode and bringing it back in windowed mode -Update the IMGUI code in a generic way to support this as well -Check the book's "Printing Parameters from the GL Context" to output a bunch of OpenGL context params 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. -Make sure fullscreen works correctly on OSX. Check the book to see how to handle Retina Display. -Change all error messages to use the logger class so they get printed to the log file as well. -Change the logger class to use cout instead of printf. Consider how easy variable argument support would be. - What I really need to do is completely refactor the logger class to return an ofstream to the logger file and use streaming to send output to it. The log file can be closed in the destructor. -Move some common functions into a Utils class 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. 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. -Show the fps in a gui component instead of printing it to the console MAJOR TASKS TODO ================== 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 -Implement lasers -Figure out why rendering doesn't work on the Windows laptop STEPS TO SWITCH OFF OF GLOBAL VBOS =================================== 2. Inside populateBuffers, check for the object type and resize all buffers of that type (will eventually do this in a loop) STEPS TO SWITCH OFF OF GLOBAL VBOS DONE ======================================== 1. Remove buffer re-assignment when creating shader model groups 3. In copyObjectData, set vertex_vbo_offset for the object type only using numPoints, not vbo_base 4. in renderScene, change the glDrawArrays call to use an offset of 0 LONGTERM TODO ============== - Switch from IMGUI to Allegro (OUTDATED) - Correctly align UI elements when the window is resized - Switch to Vulkan and SDL (might consider SFML in the future as well) Phase 1 -Allow the ship laser to be upgraded after killing a certain amount of asteroids -There will be two upgrade levels that change the laser color and increase its damage -Go over the code again and fix the remaining TODO items Phase 2 -Look for ways to make the game engine more generic -Maybe separate out the camera controls -Turn the game into more of an overhead view RTS where you can use the mouse to select and move ships