Index: new-game.cpp
===================================================================
--- new-game.cpp	(revision 14e69189a4e5dee0b2265f9e757c5fd35432a31c)
+++ new-game.cpp	(revision f97e6385c34858b5fb7dfd35a784688a593f2048)
@@ -184,10 +184,5 @@
                   map<GLuint, BufferInfo>& shaderBufferInfo,
                   map<ObjectType, ShaderModelGroup>& modelGroups,
-                  GLuint points_vbo,
-                  GLuint colors_vbo,
-                  GLuint texcoords_vbo,
-                  GLuint normals_vbo,
-                  GLuint ubo,
-                  GLuint model_mat_idx_vbo);
+                  GLuint ubo);
 void removeObjectFromScene(SceneObject& obj, GLuint ubo);
 
@@ -208,31 +203,13 @@
 void calculateObjectBoundingBox(SceneObject* obj);
 
-void initializeBuffers(
-                  GLuint* points_vbo,
-                  GLuint* colors_vbo,
-                  GLuint* texcoords_vbo,
-                  GLuint* normals_vbo,
-                  GLuint* ubo,
-                  GLuint* model_mat_idx_vbo);
-
 void initializeParticleEffectBuffers(vec3 origin,
                   map<GLuint, BufferInfo>& shaderBufferInfo,
                   map<ObjectType, ShaderModelGroup>& modelGroups,
-                  GLuint points_vbo,
-                  GLuint colors_vbo,
-                  GLuint texcoords_vbo,
-                  GLuint normals_vbo,
-                  GLuint ubo,
-                  GLuint model_mat_idx_vbo);
+                  GLuint ubo);
 
 void populateBuffers(vector<SceneObject*>& objects,
                   map<GLuint, BufferInfo>& shaderBufferInfo,
                   map<ObjectType, ShaderModelGroup>& modelGroups,
-                  GLuint points_vbo,
-                  GLuint colors_vbo,
-                  GLuint texcoords_vbo,
-                  GLuint normals_vbo,
-                  GLuint ubo,
-                  GLuint model_mat_idx_vbo);
+                  GLuint ubo);
 
 void copyObjectDataToBuffers(SceneObject& obj,
@@ -497,19 +474,6 @@
    GLfloat curTime, prevTime, elapsedTime;
 
-   GLuint
-    points_vbo,
-    colors_vbo,
-    texcoords_vbo,
-    normals_vbo,
-    ubo,
-    model_mat_idx_vbo;
-
-   initializeBuffers(
-      &points_vbo,
-      &colors_vbo,
-      &texcoords_vbo,
-      &normals_vbo,
-      &ubo,
-      &model_mat_idx_vbo);
+   GLuint ubo = 0;
+   glGenBuffers(1, &ubo);
 
    map<GLuint, BufferInfo> shaderBufferInfo;
@@ -612,10 +576,5 @@
    populateBuffers(objects,
       shaderBufferInfo, modelGroups,
-      points_vbo,
-      colors_vbo,
-      texcoords_vbo,
-      normals_vbo,
-      ubo,
-      model_mat_idx_vbo);
+      ubo);
 
    float cam_speed = 1.0f;
@@ -654,10 +613,5 @@
       shaderBufferInfo,
       modelGroups,
-      points_vbo,
-      colors_vbo,
-      texcoords_vbo,
-      normals_vbo,
-      ubo,
-      model_mat_idx_vbo);
+      ubo);
 
    /* TODO: Fix the UBO binding code based on the following forum post (in order to support multiple ubos):
@@ -816,11 +770,5 @@
          if (elapsed_seconds_spawn > 0.5f) {
             SceneObject* obj = createAsteroid(vec3(getRandomNum(-1.3f, 1.3f), -1.2f, getRandomNum(-5.5f, -4.5f)));
-            addObjectToScene(obj, shaderBufferInfo, modelGroups,
-               points_vbo,
-               colors_vbo,
-               texcoords_vbo,
-               normals_vbo,
-               ubo,
-               model_mat_idx_vbo);
+            addObjectToScene(obj, shaderBufferInfo, modelGroups, ubo);
 
             elapsed_seconds_spawn -= 0.5f;
@@ -876,11 +824,5 @@
                vec3(-0.21f, -1.19f, -3.0f)+offset,
                vec3(0.0f, 1.0f, 0.0f), 0.03f);
-            addObjectToScene(leftLaser, shaderBufferInfo, modelGroups,
-               points_vbo,
-               colors_vbo,
-               texcoords_vbo,
-               normals_vbo,
-               ubo,
-               model_mat_idx_vbo);
+            addObjectToScene(leftLaser, shaderBufferInfo, modelGroups, ubo);
          } else if (key_state[GLFW_KEY_Z] == GLFW_RELEASE) {
             removeObjectFromScene(*leftLaser, ubo);
@@ -894,11 +836,5 @@
                vec3(0.21f, -1.19f, -3.0f) + offset,
                vec3(0.0f, 1.0f, 0.0f), 0.03f);
-            addObjectToScene(rightLaser, shaderBufferInfo, modelGroups,
-               points_vbo,
-               colors_vbo,
-               texcoords_vbo,
-               normals_vbo,
-               ubo,
-               model_mat_idx_vbo);
+            addObjectToScene(rightLaser, shaderBufferInfo, modelGroups, ubo);
          } else if (key_state[GLFW_KEY_X] == GLFW_RELEASE) {
             removeObjectFromScene(*rightLaser, ubo);
@@ -1386,10 +1322,5 @@
    map<GLuint, BufferInfo>& shaderBufferInfo,
    map<ObjectType, ShaderModelGroup>& modelGroups,
-   GLuint points_vbo,
-   GLuint colors_vbo,
-   GLuint texcoords_vbo,
-   GLuint normals_vbo,
-   GLuint ubo,
-   GLuint model_mat_idx_vbo) {
+   GLuint ubo) {
    objects.push_back(obj);
 
@@ -1408,11 +1339,5 @@
       }
 
-      populateBuffers(objects, shaderBufferInfo, modelGroups,
-         points_vbo,
-         colors_vbo,
-         texcoords_vbo,
-         normals_vbo,
-         ubo,
-         model_mat_idx_vbo);
+      populateBuffers(objects, shaderBufferInfo, modelGroups, ubo);
    } else {
       copyObjectDataToBuffers(*objects.back(), shaderBufferInfo, modelGroups, ubo);
@@ -2098,39 +2023,8 @@
 }
 
-void initializeBuffers(
-                  GLuint* points_vbo,
-                  GLuint* colors_vbo,
-                  GLuint* texcoords_vbo,
-                  GLuint* normals_vbo,
-                  GLuint* ubo,
-                  GLuint* model_mat_idx_vbo) {
-   *points_vbo = 0;
-   glGenBuffers(1, points_vbo);
-
-   *colors_vbo = 0;
-   glGenBuffers(1, colors_vbo);
-
-   *texcoords_vbo = 0;
-   glGenBuffers(1, texcoords_vbo);
-
-   *normals_vbo = 0;
-   glGenBuffers(1, normals_vbo);
-
-   *ubo = 0;
-   glGenBuffers(1, ubo);
-
-   *model_mat_idx_vbo = 0;
-   glGenBuffers(1, model_mat_idx_vbo);
-}
-
 void initializeParticleEffectBuffers(vec3 origin,
                   map<GLuint, BufferInfo>& shaderBufferInfo,
                   map<ObjectType, ShaderModelGroup>& modelGroups,
-                  GLuint points_vbo,
-                  GLuint colors_vbo,
-                  GLuint texcoords_vbo,
-                  GLuint normals_vbo,
-                  GLuint ubo,
-                  GLuint model_mat_idx_vbo) {
+                  GLuint ubo) {
    float vv[EXPLOSION_PARTICLE_COUNT * 3]; // initial velocities vec3
    float vt[EXPLOSION_PARTICLE_COUNT]; // initial times
@@ -2167,11 +2061,5 @@
 
    objExplosion = createExplosion();
-   addObjectToScene(objExplosion, shaderBufferInfo, modelGroups,
-      points_vbo,
-      colors_vbo,
-      texcoords_vbo,
-      normals_vbo,
-      ubo,
-      model_mat_idx_vbo);
+   addObjectToScene(objExplosion, shaderBufferInfo, modelGroups, ubo);
 }
 
@@ -2179,10 +2067,5 @@
                   map<GLuint, BufferInfo>& shaderBufferInfo,
                   map<ObjectType, ShaderModelGroup>& modelGroups,
-                  GLuint points_vbo,
-                  GLuint colors_vbo,
-                  GLuint texcoords_vbo,
-                  GLuint normals_vbo,
-                  GLuint ubo,
-                  GLuint ubo_idx_vbo) {
+                  GLuint ubo) {
    GLsizeiptr num_points = 0;
    GLsizeiptr num_objects = 0;
@@ -2250,7 +2133,4 @@
    }
 
-   /* Since we just want to start with lasers, make a loop that goes through all the laser model group attributes
-    * and allocates data for them. Determine how to go from GLenum (e.g. GL_FLOAT) to typedef (e.g. GLfloat)
-    */
    map<ObjectType, ShaderModelGroup>::iterator modelGroupIt;
    ShaderModelGroup* smg;
@@ -2310,23 +2190,8 @@
    }
 
-   // Allocate all the buffers using the counts calculated above
-
-   glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
-
-   glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
-
-   glBindBuffer(GL_ARRAY_BUFFER, texcoords_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 2, NULL, GL_DYNAMIC_DRAW);
-
-   glBindBuffer(GL_ARRAY_BUFFER, normals_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
+   // Allocate the ubo using the counts calculated above
 
    glBindBuffer(GL_UNIFORM_BUFFER, ubo);
    glBufferData(GL_UNIFORM_BUFFER, num_objects * sizeof(mat4), NULL, GL_DYNAMIC_DRAW);
-
-   glBindBuffer(GL_ARRAY_BUFFER, ubo_idx_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLuint), NULL, GL_DYNAMIC_DRAW);
 
    for (it = objects.begin(); it != objects.end(); it++) {
