Changeset b7fc3c2 in opengl-game for sdl-game.cpp


Ignore:
Timestamp:
Jun 10, 2021, 2:58:54 PM (3 years ago)
Author:
Dmitry Portnoy <dportnoy@…>
Branches:
feature/imgui-sdl
Children:
c1ec4f6
Parents:
bb76950
git-author:
Dmitry Portnoy <dportnoy@…> (06/10/21 14:53:52)
git-committer:
Dmitry Portnoy <dportnoy@…> (06/10/21 14:58:54)
Message:

Modify the VulkanBuffer class to take a range and to align data based on that rather than the size of an individual data item. Also, reorganize the code in VulkanGae::updateScene() in a more logical fashion, and remove VulkanGame::updateObject() and inline its functionality.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sdl-game.cpp

    rbb76950 rb7fc3c2  
    9292   vkGetPhysicalDeviceProperties(physicalDevice, &deviceProperties);
    9393
    94    objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.minUniformBufferOffsetAlignment);
     94   objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxStorageBufferRange,
     95                                                          deviceProperties.limits.minStorageBufferOffsetAlignment);
    9596
    9697   initImGuiOverlay();
     
    448449
    449450void VulkanGame::updateScene() {
    450    // Rotate the textured squares
    451    for (SceneObject<ModelVertex, SSBO_ModelObject>& model : this->modelObjects) {
    452       model.model_transform =
     451   // TODO: Probably move the resizing to the VulkanBuffer class
     452   if (objects_modelPipeline.resized) {
     453      resizeBufferSet(storageBuffers_modelPipeline, objects_modelPipeline.memorySize(), resourceCommandPool,
     454                      graphicsQueue, true);
     455
     456      objects_modelPipeline.resize();
     457
     458      modelPipeline.updateDescriptorInfo(1, &storageBuffers_modelPipeline.infoSet, swapChainImages.size());
     459   }
     460
     461   for (size_t i = 0; i < modelObjects.size(); i++) {
     462      SceneObject<ModelVertex, SSBO_ModelObject>& obj = modelObjects[i];
     463      SSBO_ModelObject& objData = obj.ssbo;
     464
     465      // Rotate the textured squares
     466      obj.model_transform =
    453467         translate(mat4(1.0f), vec3(0.0f, -2.0f, -0.0f)) *
    454468         rotate(mat4(1.0f), curTime * radians(90.0f), vec3(0.0f, 0.0f, 1.0f));
    455       model.modified = true;
    456    }
    457 
    458    // TODO: Probably move the resizing to the VulkanBuffer class
    459    if (objects_modelPipeline.resized) {
    460       // TODO: Also resize the dynamic ubo
    461       resizeBufferSet(storageBuffers_modelPipeline, objects_modelPipeline.capacity * sizeof(SSBO_ModelObject),
    462                       resourceCommandPool, graphicsQueue, true);
    463 
    464       objects_modelPipeline.resize();
    465 
    466       modelPipeline.updateDescriptorInfo(1, &storageBuffers_modelPipeline.infoSet, swapChainImages.size());
    467    }
    468 
    469    for (size_t i = 0; i < modelObjects.size(); i++) {
    470       if (modelObjects[i].modified) {
    471          updateObject(modelObjects[i]);
    472          updateBufferSet(storageBuffers_modelPipeline, i, modelObjects[i].ssbo);
     469      obj.modified = true;
     470
     471      if (obj.modified) {
     472         objData.model = obj.model_transform * obj.model_base;
     473         obj.center = vec3(objData.model * vec4(0.0f, 0.0f, 0.0f, 1.0f));
     474
     475         obj.modified = false;
     476
     477         updateBufferSet(storageBuffers_modelPipeline, i, objData);
    473478      }
    474479   }
Note: See TracChangeset for help on using the changeset viewer.