Changeset f97e638 in opengl-game for new-game.cpp


Ignore:
Timestamp:
Apr 19, 2019, 12:41:18 AM (5 years ago)
Author:
Dmitry Portnoy <dmitry.portnoy@…>
Branches:
feature/imgui-sdl, master, points-test
Children:
dc19a39
Parents:
14e6918
Message:

Remove all the generic vbos

File:
1 edited

Legend:

Unmodified
Added
Removed
  • new-game.cpp

    r14e6918 rf97e638  
    184184                  map<GLuint, BufferInfo>& shaderBufferInfo,
    185185                  map<ObjectType, ShaderModelGroup>& modelGroups,
    186                   GLuint points_vbo,
    187                   GLuint colors_vbo,
    188                   GLuint texcoords_vbo,
    189                   GLuint normals_vbo,
    190                   GLuint ubo,
    191                   GLuint model_mat_idx_vbo);
     186                  GLuint ubo);
    192187void removeObjectFromScene(SceneObject& obj, GLuint ubo);
    193188
     
    208203void calculateObjectBoundingBox(SceneObject* obj);
    209204
    210 void initializeBuffers(
    211                   GLuint* points_vbo,
    212                   GLuint* colors_vbo,
    213                   GLuint* texcoords_vbo,
    214                   GLuint* normals_vbo,
    215                   GLuint* ubo,
    216                   GLuint* model_mat_idx_vbo);
    217 
    218205void initializeParticleEffectBuffers(vec3 origin,
    219206                  map<GLuint, BufferInfo>& shaderBufferInfo,
    220207                  map<ObjectType, ShaderModelGroup>& modelGroups,
    221                   GLuint points_vbo,
    222                   GLuint colors_vbo,
    223                   GLuint texcoords_vbo,
    224                   GLuint normals_vbo,
    225                   GLuint ubo,
    226                   GLuint model_mat_idx_vbo);
     208                  GLuint ubo);
    227209
    228210void populateBuffers(vector<SceneObject*>& objects,
    229211                  map<GLuint, BufferInfo>& shaderBufferInfo,
    230212                  map<ObjectType, ShaderModelGroup>& modelGroups,
    231                   GLuint points_vbo,
    232                   GLuint colors_vbo,
    233                   GLuint texcoords_vbo,
    234                   GLuint normals_vbo,
    235                   GLuint ubo,
    236                   GLuint model_mat_idx_vbo);
     213                  GLuint ubo);
    237214
    238215void copyObjectDataToBuffers(SceneObject& obj,
     
    497474   GLfloat curTime, prevTime, elapsedTime;
    498475
    499    GLuint
    500     points_vbo,
    501     colors_vbo,
    502     texcoords_vbo,
    503     normals_vbo,
    504     ubo,
    505     model_mat_idx_vbo;
    506 
    507    initializeBuffers(
    508       &points_vbo,
    509       &colors_vbo,
    510       &texcoords_vbo,
    511       &normals_vbo,
    512       &ubo,
    513       &model_mat_idx_vbo);
     476   GLuint ubo = 0;
     477   glGenBuffers(1, &ubo);
    514478
    515479   map<GLuint, BufferInfo> shaderBufferInfo;
     
    612576   populateBuffers(objects,
    613577      shaderBufferInfo, modelGroups,
    614       points_vbo,
    615       colors_vbo,
    616       texcoords_vbo,
    617       normals_vbo,
    618       ubo,
    619       model_mat_idx_vbo);
     578      ubo);
    620579
    621580   float cam_speed = 1.0f;
     
    654613      shaderBufferInfo,
    655614      modelGroups,
    656       points_vbo,
    657       colors_vbo,
    658       texcoords_vbo,
    659       normals_vbo,
    660       ubo,
    661       model_mat_idx_vbo);
     615      ubo);
    662616
    663617   /* TODO: Fix the UBO binding code based on the following forum post (in order to support multiple ubos):
     
    816770         if (elapsed_seconds_spawn > 0.5f) {
    817771            SceneObject* obj = createAsteroid(vec3(getRandomNum(-1.3f, 1.3f), -1.2f, getRandomNum(-5.5f, -4.5f)));
    818             addObjectToScene(obj, shaderBufferInfo, modelGroups,
    819                points_vbo,
    820                colors_vbo,
    821                texcoords_vbo,
    822                normals_vbo,
    823                ubo,
    824                model_mat_idx_vbo);
     772            addObjectToScene(obj, shaderBufferInfo, modelGroups, ubo);
    825773
    826774            elapsed_seconds_spawn -= 0.5f;
     
    876824               vec3(-0.21f, -1.19f, -3.0f)+offset,
    877825               vec3(0.0f, 1.0f, 0.0f), 0.03f);
    878             addObjectToScene(leftLaser, shaderBufferInfo, modelGroups,
    879                points_vbo,
    880                colors_vbo,
    881                texcoords_vbo,
    882                normals_vbo,
    883                ubo,
    884                model_mat_idx_vbo);
     826            addObjectToScene(leftLaser, shaderBufferInfo, modelGroups, ubo);
    885827         } else if (key_state[GLFW_KEY_Z] == GLFW_RELEASE) {
    886828            removeObjectFromScene(*leftLaser, ubo);
     
    894836               vec3(0.21f, -1.19f, -3.0f) + offset,
    895837               vec3(0.0f, 1.0f, 0.0f), 0.03f);
    896             addObjectToScene(rightLaser, shaderBufferInfo, modelGroups,
    897                points_vbo,
    898                colors_vbo,
    899                texcoords_vbo,
    900                normals_vbo,
    901                ubo,
    902                model_mat_idx_vbo);
     838            addObjectToScene(rightLaser, shaderBufferInfo, modelGroups, ubo);
    903839         } else if (key_state[GLFW_KEY_X] == GLFW_RELEASE) {
    904840            removeObjectFromScene(*rightLaser, ubo);
     
    13861322   map<GLuint, BufferInfo>& shaderBufferInfo,
    13871323   map<ObjectType, ShaderModelGroup>& modelGroups,
    1388    GLuint points_vbo,
    1389    GLuint colors_vbo,
    1390    GLuint texcoords_vbo,
    1391    GLuint normals_vbo,
    1392    GLuint ubo,
    1393    GLuint model_mat_idx_vbo) {
     1324   GLuint ubo) {
    13941325   objects.push_back(obj);
    13951326
     
    14081339      }
    14091340
    1410       populateBuffers(objects, shaderBufferInfo, modelGroups,
    1411          points_vbo,
    1412          colors_vbo,
    1413          texcoords_vbo,
    1414          normals_vbo,
    1415          ubo,
    1416          model_mat_idx_vbo);
     1341      populateBuffers(objects, shaderBufferInfo, modelGroups, ubo);
    14171342   } else {
    14181343      copyObjectDataToBuffers(*objects.back(), shaderBufferInfo, modelGroups, ubo);
     
    20982023}
    20992024
    2100 void initializeBuffers(
    2101                   GLuint* points_vbo,
    2102                   GLuint* colors_vbo,
    2103                   GLuint* texcoords_vbo,
    2104                   GLuint* normals_vbo,
    2105                   GLuint* ubo,
    2106                   GLuint* model_mat_idx_vbo) {
    2107    *points_vbo = 0;
    2108    glGenBuffers(1, points_vbo);
    2109 
    2110    *colors_vbo = 0;
    2111    glGenBuffers(1, colors_vbo);
    2112 
    2113    *texcoords_vbo = 0;
    2114    glGenBuffers(1, texcoords_vbo);
    2115 
    2116    *normals_vbo = 0;
    2117    glGenBuffers(1, normals_vbo);
    2118 
    2119    *ubo = 0;
    2120    glGenBuffers(1, ubo);
    2121 
    2122    *model_mat_idx_vbo = 0;
    2123    glGenBuffers(1, model_mat_idx_vbo);
    2124 }
    2125 
    21262025void initializeParticleEffectBuffers(vec3 origin,
    21272026                  map<GLuint, BufferInfo>& shaderBufferInfo,
    21282027                  map<ObjectType, ShaderModelGroup>& modelGroups,
    2129                   GLuint points_vbo,
    2130                   GLuint colors_vbo,
    2131                   GLuint texcoords_vbo,
    2132                   GLuint normals_vbo,
    2133                   GLuint ubo,
    2134                   GLuint model_mat_idx_vbo) {
     2028                  GLuint ubo) {
    21352029   float vv[EXPLOSION_PARTICLE_COUNT * 3]; // initial velocities vec3
    21362030   float vt[EXPLOSION_PARTICLE_COUNT]; // initial times
     
    21672061
    21682062   objExplosion = createExplosion();
    2169    addObjectToScene(objExplosion, shaderBufferInfo, modelGroups,
    2170       points_vbo,
    2171       colors_vbo,
    2172       texcoords_vbo,
    2173       normals_vbo,
    2174       ubo,
    2175       model_mat_idx_vbo);
     2063   addObjectToScene(objExplosion, shaderBufferInfo, modelGroups, ubo);
    21762064}
    21772065
     
    21792067                  map<GLuint, BufferInfo>& shaderBufferInfo,
    21802068                  map<ObjectType, ShaderModelGroup>& modelGroups,
    2181                   GLuint points_vbo,
    2182                   GLuint colors_vbo,
    2183                   GLuint texcoords_vbo,
    2184                   GLuint normals_vbo,
    2185                   GLuint ubo,
    2186                   GLuint ubo_idx_vbo) {
     2069                  GLuint ubo) {
    21872070   GLsizeiptr num_points = 0;
    21882071   GLsizeiptr num_objects = 0;
     
    22502133   }
    22512134
    2252    /* Since we just want to start with lasers, make a loop that goes through all the laser model group attributes
    2253     * and allocates data for them. Determine how to go from GLenum (e.g. GL_FLOAT) to typedef (e.g. GLfloat)
    2254     */
    22552135   map<ObjectType, ShaderModelGroup>::iterator modelGroupIt;
    22562136   ShaderModelGroup* smg;
     
    23102190   }
    23112191
    2312    // Allocate all the buffers using the counts calculated above
    2313 
    2314    glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
    2315    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
    2316 
    2317    glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
    2318    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
    2319 
    2320    glBindBuffer(GL_ARRAY_BUFFER, texcoords_vbo);
    2321    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 2, NULL, GL_DYNAMIC_DRAW);
    2322 
    2323    glBindBuffer(GL_ARRAY_BUFFER, normals_vbo);
    2324    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
     2192   // Allocate the ubo using the counts calculated above
    23252193
    23262194   glBindBuffer(GL_UNIFORM_BUFFER, ubo);
    23272195   glBufferData(GL_UNIFORM_BUFFER, num_objects * sizeof(mat4), NULL, GL_DYNAMIC_DRAW);
    2328 
    2329    glBindBuffer(GL_ARRAY_BUFFER, ubo_idx_vbo);
    2330    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLuint), NULL, GL_DYNAMIC_DRAW);
    23312196
    23322197   for (it = objects.begin(); it != objects.end(); it++) {
Note: See TracChangeset for help on using the changeset viewer.