Changeset 0fe8433 in opengl-game for vulkan-game.cpp


Ignore:
Timestamp:
Dec 24, 2019, 2:57:03 AM (5 years ago)
Author:
Dmitry Portnoy <dmp1488@…>
Branches:
feature/imgui-sdl, master, points-test
Children:
3e8cc8b
Parents:
cd1cb0f
Message:

Create an addObject() method in VulkanGame (which wraps the old addObject() method in GraphicsPipeline_Vulkan), and move the list of objects and other code to manage objects from the pipeline to the VulkanGame class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vulkan-game.cpp

    rcd1cb0f r0fe8433  
    207207      VK_SHADER_STAGE_FRAGMENT_BIT, &floorTextureImageDescriptor);
    208208
    209    modelPipeline.addObject({
     209   addObject(modelObjects, modelPipeline,
     210      {
    210211         {{-0.5f, -0.5f, -2.0f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},
    211212         {{ 0.5f, -0.5f, -2.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},
     
    214215      }, {
    215216         0, 1, 2, 2, 3, 0
    216       }, commandPool, graphicsQueue);
    217 
    218    modelPipeline.addObject({
     217      });
     218
     219   addObject(modelObjects, modelPipeline,
     220      {
    219221         {{-0.5f, -0.5f, -1.5f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},
    220222         {{ 0.5f, -0.5f, -1.5f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},
     
    223225      }, {
    224226         0, 1, 2, 2, 3, 0
    225       }, commandPool, graphicsQueue);
     227      });
    226228
    227229   modelPipeline.createDescriptorSetLayout();
     
    236238      VK_SHADER_STAGE_FRAGMENT_BIT, &sdlOverlayImageDescriptor);
    237239
    238    overlayPipeline.addObject({
     240   addObject(overlayObjects, overlayPipeline,
     241      {
    239242         {{-1.0f,  1.0f,  0.0f}, {0.0f, 1.0f}},
    240243         {{ 1.0f,  1.0f,  0.0f}, {1.0f, 1.0f}},
     
    243246      }, {
    244247         0, 1, 2, 2, 3, 0
    245       }, commandPool, graphicsQueue);
     248      });
    246249
    247250   overlayPipeline.createDescriptorSetLayout();
     
    267270   // TODO: With the normals, indexing basically becomes pointless since no vertices will have exactly
    268271   // the same data. Add an option to make some pipelines not use indexing
    269    shipPipeline.addObject(
     272   addObject(shipObjects, shipPipeline,
    270273      centerObject<ShipVertex>(
    271       addObjectIndex<ShipVertex>(shipPipeline.getObjects().size(),
     274      addObjectIndex<ShipVertex>(shipObjects.size(),
    272275      addVertexNormals<ShipVertex>({
    273276         //back
     
    496499         132, 133, 134,
    497500         135, 136, 137,
    498       }, commandPool, graphicsQueue);
     501      });
    499502
    500503   shipPipeline.createDescriptorSetLayout();
     
    509512   createSyncObjects();
    510513
    511    shipPipeline.getObjects()[0].model_base =
     514   shipObjects[0].model_base =
    512515      translate(mat4(1.0f), vec3(0.0f, -1.2f, 1.65f)) *
    513516      scale(mat4(1.0f), vec3(0.1f, 0.1f, 0.1f));
     
    575578               } else if (e.key.keycode == SDL_SCANCODE_SPACE) {
    576579                  cout << "Adding a plane" << endl;
    577                   float zOffset = -2.0f + (0.5f * modelPipeline.getObjects().size());
     580                  float zOffset = -2.0f + (0.5f * modelObjects.size());
    578581
    579582                  vkDeviceWaitIdle(device);
    580583                  vkFreeCommandBuffers(device, commandPool, static_cast<uint32_t>(commandBuffers.size()), commandBuffers.data());
    581584
    582                   modelPipeline.addObject({
    583                      {{-0.5f, -0.5f,  zOffset}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},
    584                      {{ 0.5f, -0.5f,  zOffset}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},
    585                      {{ 0.5f,  0.5f,  zOffset}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},
    586                      {{-0.5f,  0.5f,  zOffset}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}
    587                   }, {
    588                      0, 1, 2, 2, 3, 0
    589                   }, commandPool, graphicsQueue);
     585                  addObject(modelObjects, modelPipeline,
     586                     {
     587                        {{-0.5f, -0.5f,  zOffset}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},
     588                        {{ 0.5f, -0.5f,  zOffset}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},
     589                        {{ 0.5f,  0.5f,  zOffset}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},
     590                        {{-0.5f,  0.5f,  zOffset}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}
     591                     }, {
     592                        0, 1, 2, 2, 3, 0
     593                     });
    590594
    591595                  createCommandBuffers();
     
    615619
    616620      if (gui->keyPressed(SDL_SCANCODE_LEFT)) {
    617          transformObject(shipPipeline.getObjects()[0], translate(mat4(1.0f), vec3(-0.01f, 0.0f, 0.0f)));
     621         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(-0.01f, 0.0f, 0.0f)));
    618622      } else if (gui->keyPressed(SDL_SCANCODE_RIGHT)) {
    619          transformObject(shipPipeline.getObjects()[0], translate(mat4(1.0f), vec3(0.01f, 0.0f, 0.0f)));
     623         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(0.01f, 0.0f, 0.0f)));
    620624      }
    621625
     
    641645      rotate(mat4(1.0f), time * radians(90.0f), vec3(0.0f, 0.0f, 1.0f));
    642646
    643    so_Ship.model = shipPipeline.getObjects()[0].model_transform * shipPipeline.getObjects()[0].model_base;
     647   so_Ship.model = shipObjects[0].model_transform * shipObjects[0].model_base;
    644648
    645649   VulkanUtils::copyDataToMemory(device, uniformBuffersMemory_scenePipeline[currentImage], object_VP_mats);
Note: See TracChangeset for help on using the changeset viewer.