Changeset c163d81 in opengl-game


Ignore:
Timestamp:
May 19, 2021, 7:16:37 PM (3 years ago)
Author:
Dmitry Portnoy <dportnoy@…>
Branches:
feature/imgui-sdl
Children:
58453c3
Parents:
1abebc1
git-author:
Dmitry Portnoy <dportnoy@…> (05/19/21 19:16:33)
git-committer:
Dmitry Portnoy <dportnoy@…> (05/19/21 19:16:37)
Message:

Use BufferSet objects to store data related to uniform and storage
buffers, and change createBufferSet() to take a BufferSet objects
instead of lists of buffers, memory, and descriptor info.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • sdl-game.cpp

    r1abebc1 rc163d81  
    111111   createBufferSet(sizeof(UBO_VP_mats),
    112112      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    113       uniformBuffers_modelPipeline, uniformBuffersMemory_modelPipeline, uniformBufferInfoList_modelPipeline);
     113      uniformBuffers_modelPipeline);
    114114
    115115   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    116       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_modelPipeline);
     116      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_modelPipeline.infoSet);
    117117   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    118118      VK_SHADER_STAGE_VERTEX_BIT, &storageBuffers_modelPipeline.infoSet);
     
    275275      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    276276      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    277       storageBuffers_modelPipeline.buffers, storageBuffers_modelPipeline.memory,
    278       storageBuffers_modelPipeline.infoSet);
     277      storageBuffers_modelPipeline);
    279278}
    280279
     
    473472         updateObject(modelObjects[i]);
    474473         updateBufferSet(storageBuffers_modelPipeline, i, modelObjects[i].ssbo);
    475 
    476       }
    477    }
    478 
    479    VulkanUtils::copyDataToMemory(device, object_VP_mats, uniformBuffersMemory_modelPipeline[imageIndex], 0);
     474      }
     475   }
     476
     477   VulkanUtils::copyDataToMemory(device, object_VP_mats, uniformBuffers_modelPipeline.memory[imageIndex], 0);
    480478}
    481479
     
    11171115
    11181116void VulkanGame::createBufferSet(VkDeviceSize bufferSize, VkBufferUsageFlags flags, VkMemoryPropertyFlags properties,
    1119                                  vector<VkBuffer>& buffers, vector<VkDeviceMemory>& buffersMemory,
    1120                                  vector<VkDescriptorBufferInfo>& bufferInfoList) {
    1121    buffers.resize(swapChainImageCount);
    1122    buffersMemory.resize(swapChainImageCount);
    1123    bufferInfoList.resize(swapChainImageCount);
     1117                                 BufferSet& set) {
     1118   set.buffers.resize(swapChainImageCount);
     1119   set.memory.resize(swapChainImageCount);
     1120   set.infoSet.resize(swapChainImageCount);
    11241121
    11251122   for (size_t i = 0; i < swapChainImageCount; i++) {
    1126       VulkanUtils::createBuffer(device, physicalDevice, bufferSize, flags, properties, buffers[i], buffersMemory[i]);
    1127 
    1128       bufferInfoList[i].buffer = buffers[i];
    1129       bufferInfoList[i].offset = 0; // This is the offset from the start of the buffer, so always 0 for now
    1130       bufferInfoList[i].range = bufferSize; // Size of the update starting from offset, or VK_WHOLE_SIZE
     1123      VulkanUtils::createBuffer(device, physicalDevice, bufferSize, flags, properties, set.buffers[i], set.memory[i]);
     1124
     1125      set.infoSet[i].buffer = set.buffers[i];
     1126      set.infoSet[i].offset = 0; // This is the offset from the start of the buffer, so always 0 for now
     1127      set.infoSet[i].range = bufferSize; // Size of the update starting from offset, or VK_WHOLE_SIZE
    11311128   }
    11321129}
     
    12651262   createBufferSet(sizeof(UBO_VP_mats),
    12661263      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    1267       uniformBuffers_modelPipeline, uniformBuffersMemory_modelPipeline, uniformBufferInfoList_modelPipeline);
     1264      uniformBuffers_modelPipeline);
    12681265
    12691266   modelPipeline.updateRenderPass(renderPass);
     
    12891286   modelPipeline.cleanup();
    12901287
    1291    for (size_t i = 0; i < uniformBuffers_modelPipeline.size(); i++) {
    1292       vkDestroyBuffer(device, uniformBuffers_modelPipeline[i], nullptr);
    1293       vkFreeMemory(device, uniformBuffersMemory_modelPipeline[i], nullptr);
     1288   for (size_t i = 0; i < uniformBuffers_modelPipeline.buffers.size(); i++) {
     1289      vkDestroyBuffer(device, uniformBuffers_modelPipeline.buffers[i], nullptr);
     1290      vkFreeMemory(device, uniformBuffers_modelPipeline.memory[i], nullptr);
    12941291   }
    12951292
  • sdl-game.hpp

    r1abebc1 rc163d81  
    222222      BufferSet storageBuffers_modelPipeline;
    223223      VulkanBuffer<SSBO_ModelObject> objects_modelPipeline;
     224      BufferSet uniformBuffers_modelPipeline;
    224225
    225226      // TODO: Maybe make the ubo objects part of the pipeline class since there's only one ubo
     
    232233
    233234      vector<SceneObject<ModelVertex, SSBO_ModelObject>> modelObjects;
    234 
    235       vector<VkBuffer> uniformBuffers_modelPipeline;
    236       vector<VkDeviceMemory> uniformBuffersMemory_modelPipeline;
    237       vector<VkDescriptorBufferInfo> uniformBufferInfoList_modelPipeline;
    238235
    239236      UBO_VP_mats object_VP_mats;
     
    293290
    294291      void createBufferSet(VkDeviceSize bufferSize, VkBufferUsageFlags flags, VkMemoryPropertyFlags properties,
    295                            vector<VkBuffer>& buffers, vector<VkDeviceMemory>& buffersMemory,
    296                            vector<VkDescriptorBufferInfo>& bufferInfoList);
     292                           BufferSet& set);
    297293
    298294      // TODO: See if it makes sense to rename this to resizeBufferSet() and use it to resize other types of buffers as well
  • vulkan-game.cpp

    r1abebc1 rc163d81  
    135135   createBufferSet(sizeof(UBO_VP_mats),
    136136      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    137       uniformBuffers_modelPipeline, uniformBuffersMemory_modelPipeline, uniformBufferInfoList_modelPipeline);
     137      uniformBuffers_modelPipeline);
    138138
    139139   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    140       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_modelPipeline);
     140      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_modelPipeline.infoSet);
    141141   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    142142      VK_SHADER_STAGE_VERTEX_BIT, &storageBuffers_modelPipeline.infoSet);
     
    206206   createBufferSet(sizeof(UBO_VP_mats),
    207207      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    208       uniformBuffers_shipPipeline, uniformBuffersMemory_shipPipeline, uniformBufferInfoList_shipPipeline);
     208      uniformBuffers_shipPipeline);
    209209
    210210   shipPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    211       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_shipPipeline);
     211      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_shipPipeline.infoSet);
    212212   shipPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    213213      VK_SHADER_STAGE_VERTEX_BIT, &storageBuffers_shipPipeline.infoSet);
     
    469469   createBufferSet(sizeof(UBO_VP_mats),
    470470      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    471       uniformBuffers_asteroidPipeline, uniformBuffersMemory_asteroidPipeline, uniformBufferInfoList_asteroidPipeline);
     471      uniformBuffers_asteroidPipeline);
    472472
    473473   asteroidPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    474       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_asteroidPipeline);
     474      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_asteroidPipeline.infoSet);
    475475   asteroidPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    476476      VK_SHADER_STAGE_VERTEX_BIT, &storageBuffers_asteroidPipeline.infoSet);
     
    487487   createBufferSet(sizeof(UBO_VP_mats),
    488488      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    489       uniformBuffers_laserPipeline, uniformBuffersMemory_laserPipeline, uniformBufferInfoList_laserPipeline);
     489      uniformBuffers_laserPipeline);
    490490
    491491   laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    492       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_laserPipeline);
     492      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_laserPipeline.infoSet);
    493493   laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    494494      VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, &storageBuffers_laserPipeline.infoSet);
     
    507507   createBufferSet(sizeof(UBO_Explosion),
    508508      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    509       uniformBuffers_explosionPipeline, uniformBuffersMemory_explosionPipeline, uniformBufferInfoList_explosionPipeline);
     509      uniformBuffers_explosionPipeline);
    510510
    511511   explosionPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
    512       VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList_explosionPipeline);
     512      VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_explosionPipeline.infoSet);
    513513   explosionPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
    514514      VK_SHADER_STAGE_VERTEX_BIT, &storageBuffers_explosionPipeline.infoSet);
     
    624624      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    625625      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    626       storageBuffers_modelPipeline.buffers, storageBuffers_modelPipeline.memory,
    627       storageBuffers_modelPipeline.infoSet);
     626      storageBuffers_modelPipeline);
    628627
    629628   shipPipeline = GraphicsPipeline_Vulkan<ModelVertex>(
     
    634633      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    635634      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    636       storageBuffers_shipPipeline.buffers, storageBuffers_shipPipeline.memory,
    637       storageBuffers_shipPipeline.infoSet);
     635      storageBuffers_shipPipeline);
    638636
    639637   asteroidPipeline = GraphicsPipeline_Vulkan<ModelVertex>(
     
    644642      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    645643      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    646       storageBuffers_asteroidPipeline.buffers, storageBuffers_asteroidPipeline.memory,
    647       storageBuffers_asteroidPipeline.infoSet);
     644      storageBuffers_asteroidPipeline);
    648645
    649646   laserPipeline = GraphicsPipeline_Vulkan<LaserVertex>(
     
    654651      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    655652      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    656       storageBuffers_laserPipeline.buffers, storageBuffers_laserPipeline.memory,
    657       storageBuffers_laserPipeline.infoSet);
     653      storageBuffers_laserPipeline);
    658654
    659655   explosionPipeline = GraphicsPipeline_Vulkan<ExplosionVertex>(
     
    665661      VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
    666662      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    667       storageBuffers_explosionPipeline.buffers, storageBuffers_explosionPipeline.memory,
    668       storageBuffers_explosionPipeline.infoSet);
     663      storageBuffers_explosionPipeline);
    669664}
    670665
     
    11661161   explosion_UBO.cur_time = curTime;
    11671162
    1168    VulkanUtils::copyDataToMemory(device, object_VP_mats, uniformBuffersMemory_modelPipeline[imageIndex], 0);
    1169 
    1170    VulkanUtils::copyDataToMemory(device, ship_VP_mats, uniformBuffersMemory_shipPipeline[imageIndex], 0);
    1171 
    1172    VulkanUtils::copyDataToMemory(device, asteroid_VP_mats, uniformBuffersMemory_asteroidPipeline[imageIndex], 0);
    1173 
    1174    VulkanUtils::copyDataToMemory(device, laser_VP_mats, uniformBuffersMemory_laserPipeline[imageIndex], 0);
    1175 
    1176    VulkanUtils::copyDataToMemory(device, explosion_UBO, uniformBuffersMemory_explosionPipeline[imageIndex], 0);
     1163   VulkanUtils::copyDataToMemory(device, object_VP_mats, uniformBuffers_modelPipeline.memory[imageIndex], 0);
     1164
     1165   VulkanUtils::copyDataToMemory(device, ship_VP_mats, uniformBuffers_shipPipeline.memory[imageIndex], 0);
     1166
     1167   VulkanUtils::copyDataToMemory(device, asteroid_VP_mats, uniformBuffers_asteroidPipeline.memory[imageIndex], 0);
     1168
     1169   VulkanUtils::copyDataToMemory(device, laser_VP_mats, uniformBuffers_laserPipeline.memory[imageIndex], 0);
     1170
     1171   VulkanUtils::copyDataToMemory(device, explosion_UBO, uniformBuffers_explosionPipeline.memory[imageIndex], 0);
    11771172}
    11781173
     
    19431938
    19441939void VulkanGame::createBufferSet(VkDeviceSize bufferSize, VkBufferUsageFlags flags, VkMemoryPropertyFlags properties,
    1945                                  vector<VkBuffer>& buffers, vector<VkDeviceMemory>& buffersMemory,
    1946                                  vector<VkDescriptorBufferInfo>& bufferInfoList) {
    1947    buffers.resize(swapChainImageCount);
    1948    buffersMemory.resize(swapChainImageCount);
    1949    bufferInfoList.resize(swapChainImageCount);
     1940                                 BufferSet& set) {
     1941   set.buffers.resize(swapChainImageCount);
     1942   set.memory.resize(swapChainImageCount);
     1943   set.infoSet.resize(swapChainImageCount);
    19501944
    19511945   for (size_t i = 0; i < swapChainImageCount; i++) {
    1952       VulkanUtils::createBuffer(device, physicalDevice, bufferSize, flags, properties, buffers[i], buffersMemory[i]);
    1953 
    1954       bufferInfoList[i].buffer = buffers[i];
    1955       bufferInfoList[i].offset = 0; // This is the offset from the start of the buffer, so always 0 for now
    1956       bufferInfoList[i].range = bufferSize; // Size of the update starting from offset, or VK_WHOLE_SIZE
     1946      VulkanUtils::createBuffer(device, physicalDevice, bufferSize, flags, properties, set.buffers[i], set.memory[i]);
     1947
     1948      set.infoSet[i].buffer = set.buffers[i];
     1949      set.infoSet[i].offset = 0; // This is the offset from the start of the buffer, so always 0 for now
     1950      set.infoSet[i].range = bufferSize; // Size of the update starting from offset, or VK_WHOLE_SIZE
    19571951   }
    19581952}
     
    22282222   createBufferSet(sizeof(UBO_VP_mats),
    22292223      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    2230       uniformBuffers_modelPipeline, uniformBuffersMemory_modelPipeline, uniformBufferInfoList_modelPipeline);
     2224      uniformBuffers_modelPipeline);
    22312225
    22322226   modelPipeline.updateRenderPass(renderPass);
     
    22372231   createBufferSet(sizeof(UBO_VP_mats),
    22382232      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    2239       uniformBuffers_shipPipeline, uniformBuffersMemory_shipPipeline, uniformBufferInfoList_shipPipeline);
     2233      uniformBuffers_shipPipeline);
    22402234
    22412235   shipPipeline.updateRenderPass(renderPass);
     
    22462240   createBufferSet(sizeof(UBO_VP_mats),
    22472241      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    2248       uniformBuffers_asteroidPipeline, uniformBuffersMemory_asteroidPipeline, uniformBufferInfoList_asteroidPipeline);
     2242      uniformBuffers_asteroidPipeline);
    22492243
    22502244   asteroidPipeline.updateRenderPass(renderPass);
     
    22552249   createBufferSet(sizeof(UBO_VP_mats),
    22562250      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    2257       uniformBuffers_laserPipeline, uniformBuffersMemory_laserPipeline, uniformBufferInfoList_laserPipeline);
     2251      uniformBuffers_laserPipeline);
    22582252
    22592253   laserPipeline.updateRenderPass(renderPass);
     
    22642258   createBufferSet(sizeof(UBO_Explosion),
    22652259      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    2266       uniformBuffers_explosionPipeline, uniformBuffersMemory_explosionPipeline, uniformBufferInfoList_explosionPipeline);
     2260      uniformBuffers_explosionPipeline);
    22672261
    22682262   explosionPipeline.updateRenderPass(renderPass);
     
    22922286   explosionPipeline.cleanup();
    22932287
    2294    for (size_t i = 0; i < uniformBuffers_modelPipeline.size(); i++) {
    2295       vkDestroyBuffer(device, uniformBuffers_modelPipeline[i], nullptr);
    2296       vkFreeMemory(device, uniformBuffersMemory_modelPipeline[i], nullptr);
    2297    }
    2298 
    2299    for (size_t i = 0; i < uniformBuffers_shipPipeline.size(); i++) {
    2300       vkDestroyBuffer(device, uniformBuffers_shipPipeline[i], nullptr);
    2301       vkFreeMemory(device, uniformBuffersMemory_shipPipeline[i], nullptr);
    2302    }
    2303 
    2304    for (size_t i = 0; i < uniformBuffers_asteroidPipeline.size(); i++) {
    2305       vkDestroyBuffer(device, uniformBuffers_asteroidPipeline[i], nullptr);
    2306       vkFreeMemory(device, uniformBuffersMemory_asteroidPipeline[i], nullptr);
    2307    }
    2308 
    2309    for (size_t i = 0; i < uniformBuffers_laserPipeline.size(); i++) {
    2310       vkDestroyBuffer(device, uniformBuffers_laserPipeline[i], nullptr);
    2311       vkFreeMemory(device, uniformBuffersMemory_laserPipeline[i], nullptr);
    2312    }
    2313 
    2314    for (size_t i = 0; i < uniformBuffers_explosionPipeline.size(); i++) {
    2315       vkDestroyBuffer(device, uniformBuffers_explosionPipeline[i], nullptr);
    2316       vkFreeMemory(device, uniformBuffersMemory_explosionPipeline[i], nullptr);
     2288   for (size_t i = 0; i < uniformBuffers_modelPipeline.buffers.size(); i++) {
     2289      vkDestroyBuffer(device, uniformBuffers_modelPipeline.buffers[i], nullptr);
     2290      vkFreeMemory(device, uniformBuffers_modelPipeline.memory[i], nullptr);
     2291   }
     2292
     2293   for (size_t i = 0; i < uniformBuffers_shipPipeline.buffers.size(); i++) {
     2294      vkDestroyBuffer(device, uniformBuffers_shipPipeline.buffers[i], nullptr);
     2295      vkFreeMemory(device, uniformBuffers_shipPipeline.memory[i], nullptr);
     2296   }
     2297
     2298   for (size_t i = 0; i < uniformBuffers_asteroidPipeline.buffers.size(); i++) {
     2299      vkDestroyBuffer(device, uniformBuffers_asteroidPipeline.buffers[i], nullptr);
     2300      vkFreeMemory(device, uniformBuffers_asteroidPipeline.memory[i], nullptr);
     2301   }
     2302
     2303   for (size_t i = 0; i < uniformBuffers_laserPipeline.buffers.size(); i++) {
     2304      vkDestroyBuffer(device, uniformBuffers_laserPipeline.buffers[i], nullptr);
     2305      vkFreeMemory(device, uniformBuffers_laserPipeline.memory[i], nullptr);
     2306   }
     2307
     2308   for (size_t i = 0; i < uniformBuffers_explosionPipeline.buffers.size(); i++) {
     2309      vkDestroyBuffer(device, uniformBuffers_explosionPipeline.buffers[i], nullptr);
     2310      vkFreeMemory(device, uniformBuffers_explosionPipeline.memory[i], nullptr);
    23172311   }
    23182312
  • vulkan-game.hpp

    r1abebc1 rc163d81  
    319319      BufferSet storageBuffers_modelPipeline;
    320320      VulkanBuffer<SSBO_ModelObject> objects_modelPipeline;
     321      BufferSet uniformBuffers_modelPipeline;
    321322
    322323      BufferSet storageBuffers_shipPipeline;
    323324      VulkanBuffer<SSBO_ModelObject> objects_shipPipeline;
     325      BufferSet uniformBuffers_shipPipeline;
    324326
    325327      BufferSet storageBuffers_asteroidPipeline;
    326328      VulkanBuffer<SSBO_Asteroid> objects_asteroidPipeline;
     329      BufferSet uniformBuffers_asteroidPipeline;
    327330
    328331      BufferSet storageBuffers_laserPipeline;
    329332      VulkanBuffer<SSBO_Laser> objects_laserPipeline;
     333      BufferSet uniformBuffers_laserPipeline;
    330334
    331335      BufferSet storageBuffers_explosionPipeline;
    332336      VulkanBuffer<SSBO_Explosion> objects_explosionPipeline;
     337      BufferSet uniformBuffers_explosionPipeline;
    333338
    334339      // TODO: Maybe make the ubo objects part of the pipeline class since there's only one ubo
     
    342347      vector<SceneObject<ModelVertex, SSBO_ModelObject>> modelObjects;
    343348
    344       vector<VkBuffer> uniformBuffers_modelPipeline;
    345       vector<VkDeviceMemory> uniformBuffersMemory_modelPipeline;
    346       vector<VkDescriptorBufferInfo> uniformBufferInfoList_modelPipeline;
    347 
    348349      UBO_VP_mats object_VP_mats;
    349350
    350351      vector<SceneObject<ModelVertex, SSBO_ModelObject>> shipObjects;
    351352
    352       vector<VkBuffer> uniformBuffers_shipPipeline;
    353       vector<VkDeviceMemory> uniformBuffersMemory_shipPipeline;
    354       vector<VkDescriptorBufferInfo> uniformBufferInfoList_shipPipeline;
    355 
    356353      UBO_VP_mats ship_VP_mats;
    357354
    358355      vector<SceneObject<ModelVertex, SSBO_Asteroid>> asteroidObjects;
    359356
    360       vector<VkBuffer> uniformBuffers_asteroidPipeline;
    361       vector<VkDeviceMemory> uniformBuffersMemory_asteroidPipeline;
    362       vector<VkDescriptorBufferInfo> uniformBufferInfoList_asteroidPipeline;
    363 
    364357      UBO_VP_mats asteroid_VP_mats;
    365358
    366359      vector<SceneObject<LaserVertex, SSBO_Laser>> laserObjects;
    367360
    368       vector<VkBuffer> uniformBuffers_laserPipeline;
    369       vector<VkDeviceMemory> uniformBuffersMemory_laserPipeline;
    370       vector<VkDescriptorBufferInfo> uniformBufferInfoList_laserPipeline;
    371 
    372361      UBO_VP_mats laser_VP_mats;
    373362
    374363      vector<SceneObject<ExplosionVertex, SSBO_Explosion>> explosionObjects;
    375 
    376       vector<VkBuffer> uniformBuffers_explosionPipeline;
    377       vector<VkDeviceMemory> uniformBuffersMemory_explosionPipeline;
    378       vector<VkDescriptorBufferInfo> uniformBufferInfoList_explosionPipeline;
    379364
    380365      UBO_Explosion explosion_UBO;
     
    448433
    449434      void createBufferSet(VkDeviceSize bufferSize, VkBufferUsageFlags flags, VkMemoryPropertyFlags properties,
    450                            vector<VkBuffer>& buffers, vector<VkDeviceMemory>& buffersMemory,
    451                            vector<VkDescriptorBufferInfo>& bufferInfoList);
     435                           BufferSet& set);
    452436
    453437      // TODO: See if it makes sense to rename this to resizeBufferSet() and use it to resize other types of buffers as well
Note: See TracChangeset for help on using the changeset viewer.