Changeset a9d191a in opengl-game
- Timestamp:
- Apr 12, 2019, 3:22:33 PM (6 years ago)
- Branches:
- feature/imgui-sdl, master, points-test
- Children:
- 14e6918
- Parents:
- c4c205e
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TODO.txt
rc4c205e ra9d191a 16 16 ========== 17 17 -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. 18 -Show the fps in a gui component instead of printing it to the console19 18 20 19 NEW DONE … … 22 21 -Move buffer memory allocation code into populateBuffers() 23 22 -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. 23 -Show the fps in a gui component instead of printing it to the console 24 24 25 25 MAJOR TASKS TODO 26 26 ================== 27 27 -Figure out why rendering doesn't work on the Windows laptop 28 -Implement lasers29 28 30 29 MAJOR TASKS DONE … … 34 33 -I don't think ImGui would work with SFML 35 34 -When the time comes, maybe just try using the networking and audio components of SFML 35 -Implement lasers 36 37 STEPS TO SWITCH OFF OF GLOBAL VBOS 38 =================================== 39 40 1. Remove buffer re-assignment when creating shader model groups 41 2. Inside populateBuffers, check for the object type and resize all buffers of that type (will eventually do this in a loop) 42 3. In copyObjectData, set vertex_vbo_offset for the object type only using numPoints, not vbo_base 43 4. in renderScene, change the glDrawArrays call to use an offset of 0 -
new-game.cpp
rc4c205e ra9d191a 261 261 void renderSceneGui(map<string, vector<UIValue>> valueLists); 262 262 263 void initGuiValueLists(map<string, vector<UIValue>> valueLists); 263 264 void renderGuiValueList(vector<UIValue>& values); 264 265 … … 308 309 SceneObject* objExplosion; 309 310 SceneObject* objFirst; 311 312 map<string, vector<UIValue>> valueLists; 310 313 311 314 /* … … 589 592 initModelGroupAttribs(modelGroups[TYPE_LASER]); 590 593 591 glBindBuffer(GL_ARRAY_BUFFER, points_vbo);592 glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);593 modelGroups[TYPE_LASER].attribs["vertex_position"].buffer = points_vbo;594 595 glBindBuffer(GL_ARRAY_BUFFER, texcoords_vbo);596 glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, NULL);597 modelGroups[TYPE_LASER].attribs["vt"].buffer = texcoords_vbo;598 599 glBindBuffer(GL_ARRAY_BUFFER, model_mat_idx_vbo);600 glVertexAttribIPointer(2, 1, GL_UNSIGNED_INT, 0, NULL);601 modelGroups[TYPE_LASER].attribs["ubo_index"].buffer = model_mat_idx_vbo;602 603 594 modelGroups[TYPE_EXPLOSION] = createModelGroup( 604 595 loadShaderProgram("./explosion.vert", "./explosion.frag")); … … 606 597 607 598 // The last parameter (offset) is only used for populating the buffers since the distance 608 // between each item is needed there. However, th at code isn't run for explosions right now anyway,609 // so I may as well pass in 0 here.599 // between each item is needed there. However, the explosion vbos are populated using different 600 // code anyway and don't use that argument, so I may as well pass in 0 here. 610 601 defineModelGroupAttrib(modelGroups[TYPE_EXPLOSION], "v_i", ATTRIB_POINT_VARYING, 611 602 3, GL_FLOAT, 0); … … 783 774 State curState = STATE_MAIN_MENU; 784 775 785 map<string, vector<UIValue>> valueLists; 786 787 valueLists["stats value list"] = vector<UIValue>(); 776 initGuiValueLists(valueLists); 777 788 778 valueLists["stats value list"].push_back(UIValue(UIVALUE_INT, "Score", &score)); 789 779 valueLists["stats value list"].push_back(UIValue(UIVALUE_DOUBLE, "FPS", &fps)); 790 791 valueLists["debug value list"] = vector<UIValue>();792 793 //valueLists["debug value list"].push_back(UIValue(UIVALUE_INT, "Buffer offset", &bufferOffset));794 780 795 781 while (!glfwWindowShouldClose(window) && isRunning) { … … 2291 2277 smg->vboCapacity = shaderCounts[smg->shaderProgram] * 2; 2292 2278 2279 AttribInfo* attrib; 2280 2293 2281 if (modelGroupIt->first == TYPE_SHIP) { 2294 int numPoints = shaderCounts[smg->shaderProgram];2295 AttribInfo* attrib;2296 2297 2282 attrib = &smg->attribs["vertex_position"]; 2298 2283 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2299 glBufferData(GL_ARRAY_BUFFER, numPoints* GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW);2284 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2300 2285 2301 2286 attrib = &smg->attribs["vertex_color"]; 2302 2287 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2303 glBufferData(GL_ARRAY_BUFFER, numPoints* GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW);2288 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2304 2289 2305 2290 attrib = &smg->attribs["vertex_normal"]; 2306 2291 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2307 glBufferData(GL_ARRAY_BUFFER, numPoints* GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW);2292 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2308 2293 2309 2294 attrib = &smg->attribs["ubo_index"]; 2310 2295 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2311 glBufferData(GL_ARRAY_BUFFER, numPoints * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2296 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2297 } else if (modelGroupIt->first == TYPE_LASER) { 2298 attrib = &smg->attribs["vertex_position"]; 2299 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2300 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2301 2302 attrib = &smg->attribs["vt"]; 2303 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2304 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2305 2306 attrib = &smg->attribs["ubo_index"]; 2307 glBindBuffer(GL_ARRAY_BUFFER, attrib->buffer); 2308 glBufferData(GL_ARRAY_BUFFER, smg->vboCapacity * GLsizeof(attrib->type) * attrib->size, NULL, GL_DYNAMIC_DRAW); 2312 2309 } 2313 2310 } … … 2344 2341 BufferInfo* bufferInfo = &shaderBufferInfo[modelGroups[obj.type].shaderProgram]; 2345 2342 2346 if (obj.type == TYPE_SHIP ) {2343 if (obj.type == TYPE_SHIP || obj.type == TYPE_LASER) { 2347 2344 obj.vertex_vbo_offset = modelGroups[obj.type].numPoints; 2348 2345 } else { … … 2574 2571 glBindVertexArray(modelGroups[TYPE_LASER].vao); 2575 2572 2576 glDrawArrays(GL_TRIANGLES, shaderBufferInfo[modelGroups[TYPE_LASER].shaderProgram].vbo_base, modelGroups[TYPE_LASER].numPoints);2573 glDrawArrays(GL_TRIANGLES, 0, modelGroups[TYPE_LASER].numPoints); 2577 2574 2578 2575 glUseProgram(modelGroups[TYPE_EXPLOSION].shaderProgram); … … 2699 2696 } 2700 2697 2698 void initGuiValueLists(map<string, vector<UIValue>> valueLists) { 2699 valueLists["stats value list"] = vector<UIValue>(); 2700 valueLists["debug value list"] = vector<UIValue>(); 2701 } 2702 2701 2703 void renderGuiValueList(vector<UIValue>& values) { 2702 2704 float maxWidth = 0.0f;
Note:
See TracChangeset
for help on using the changeset viewer.