Index: new-game.cpp
===================================================================
--- new-game.cpp	(revision 39ac76df37c4c13e06298da0f432ba37aa6d05b7)
+++ new-game.cpp	(revision ae0c7f4870f1d82a4472bdc465e2178b68cf8a90)
@@ -587,4 +587,38 @@
       model_mat_idx_vbo);
 
+   /* TODO: Fix the UBO binding code based on the following forum post (in order to support multiple ubos):
+
+      No, you're misunderstanding how this works. UBO binding works exactly like texture object binding.
+
+      The OpenGL context has a number of slots for binding UBOs. There are GL_MAX_UNIFORM_BUFFER_BINDINGS number of
+      slots for UBO binding.
+
+      Uniform Blocks in a program can be set to use one of the slots in the context. You do this by first querying
+      the block index using the block name (glGetUniformBlockIndex). This is similar to how you need to use
+      glGetUniformLocation in order to set a uniform's value with glUniform. Block indices, like uniform locations,
+      are specific to a program.
+
+      Once you have the block index, you use glUniformBlockBinding to set that specific program to use a particular
+      uniform buffer slot in the context.
+
+      Let's say you have a global UBO that you want to use for every program. To make using it easier, you want to
+      bind it just once.
+
+      So first, you pick a uniform buffer slot in the context, one that always will refer to this UBO. Let's say
+      you pick slot 8.
+
+      When you build a program object that may use this global uniform buffer, what you do is quite simple. First,
+      after linking the program, call glGetUniformBlockIndex(program, "NameOfGlobalUniformBlock"). If you get back
+      GL_INVALID_INDEX, then you know that the global uniform block isn't used in that program. Otherwise you get
+      back a block index.
+
+      If you got a valid block index, then you call glUniformBlockBinding(program, uniformBlockIndex, 8). Remember
+      that 8 is the uniform buffer context slot that we selected earlier. This causes this particular program to
+      use uniform buffer slot #8 to find the buffer for "NameOfGlobalUniformBlock".
+
+      Finally, to set the actual buffer in the context, call glBindBufferRange(GL_UNIFORM_BUFFER, 8,
+      bufferObjectName, offset, size);
+   */
+
    GLuint ub_binding_point = 0;
 
@@ -803,5 +837,4 @@
                   removeObjectFromScene(*objects[i], ubo);
                }
-               // MARKER: Continue code review from here
                if (((Asteroid*)objects[i])->hp <= 0) {
                   // TODO: Optimize this so I don't recalculate the camera rotation every time
