Changes in vulkan-ref.cpp [7563b8a:a0da009] in opengl-game


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • vulkan-ref.cpp

    r7563b8a ra0da009  
    102102
    103103   size_t numVertices; // Currently unused
    104    size_t vertexCapacity;
    105104   VkBuffer vertexBuffer;
    106105   VkDeviceMemory vertexBufferMemory;
    107106
    108107   size_t numIndices;
    109    size_t indexCapacity;
    110108   VkBuffer indexBuffer;
    111109   VkDeviceMemory indexBufferMemory;
     
    228226
    229227      size_t currentFrame = 0;
    230 
    231       size_t numPlanes = 0; // temp
    232228
    233229/*** START OF REFACTORED CODE ***/
     
    330326/*** END OF REFACTORED CODE ***/
    331327
     328         // THIS SECTION IS WHERE TEXTURES ARE CREATED, MAYBE SPLIT IT OFF INTO A SEPARATE FUNCTION
     329         // MAY WANT TO CREATE A STRUCT TO HOLD SIMILAR VARIABLES< LIKE THOSE FOR A TEXTURE
     330
    332331         createImageResources("textures/texture.jpg", textureImage, textureImageMemory, textureImageView);
    333332         createImageResourcesFromSDLTexture(uiOverlay, sdlOverlayImage, sdlOverlayImageMemory, sdlOverlayImageView);
     
    343342         overlayImageInfo.imageView = sdlOverlayImageView;
    344343         overlayImageInfo.sampler = textureSampler;
     344
     345         // SHADER-SPECIFIC STUFF STARTS HERE
    345346
    346347         vector<Vertex> sceneVertices = {
     
    373374         createDescriptorSetLayout(scenePipeline);
    374375
    375          numPlanes = 2;
    376376
    377377         vector<OverlayVertex> overlayVertices = {
     
    813813
    814814         info.numVertices = numVertices;
    815          info.vertexCapacity = numVertices * 2;
    816          createVertexBuffer(info, vertexData, vertexSize);
     815         createVertexBuffer(info, vertexData, vertexSize * numVertices);
    817816
    818817         info.numIndices = numIndices;
    819          info.indexCapacity = numIndices * 2;
    820          createIndexBuffer(info, indexData, indexSize);
     818         createIndexBuffer(info, indexData, indexSize * numIndices);
    821819      }
    822820
     
    13951393      }
    13961394
    1397       void createVertexBuffer(GraphicsPipelineInfo& info, const void* vertexData, int vertexSize) {
    1398          VkDeviceSize bufferSize = info.numVertices * vertexSize;
    1399          VkDeviceSize bufferCapacity = info.vertexCapacity * vertexSize;
    1400 
     1395      void createVertexBuffer(GraphicsPipelineInfo& info, const void* vertexData, VkDeviceSize bufferSize) {
    14011396         VkBuffer stagingBuffer;
    14021397         VkDeviceMemory stagingBufferMemory;
     
    14101405         vkUnmapMemory(device, stagingBufferMemory);
    14111406
    1412          createBuffer(bufferCapacity, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
     1407         createBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
    14131408            VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, info.vertexBuffer, info.vertexBufferMemory);
    14141409
    1415          copyBuffer(stagingBuffer, info.vertexBuffer, 0, 0, bufferSize);
     1410         copyBuffer(stagingBuffer, info.vertexBuffer, bufferSize);
    14161411
    14171412         vkDestroyBuffer(device, stagingBuffer, nullptr);
     
    14191414      }
    14201415
    1421       void createIndexBuffer(GraphicsPipelineInfo& info, const void* indexData, int indexSize) {
    1422          VkDeviceSize bufferSize = info.numIndices * indexSize;
    1423          VkDeviceSize bufferCapacity = info.indexCapacity * indexSize;
    1424 
     1416      void createIndexBuffer(GraphicsPipelineInfo& info, const void* indexData, VkDeviceSize bufferSize) {
    14251417         VkBuffer stagingBuffer;
    14261418         VkDeviceMemory stagingBufferMemory;
     
    14341426         vkUnmapMemory(device, stagingBufferMemory);
    14351427
    1436          createBuffer(bufferCapacity, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
     1428         createBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
    14371429            VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, info.indexBuffer, info.indexBufferMemory);
    14381430
    1439          copyBuffer(stagingBuffer, info.indexBuffer, 0, 0, bufferSize);
     1431         copyBuffer(stagingBuffer, info.indexBuffer, bufferSize);
    14401432
    14411433         vkDestroyBuffer(device, stagingBuffer, nullptr);
     
    14871479      }
    14881480
    1489       void copyDataToBuffer(const void* srcData, VkBuffer dst, VkDeviceSize dstOffset, VkDeviceSize dataSize) {
    1490          VkBuffer stagingBuffer;
    1491          VkDeviceMemory stagingBufferMemory;
    1492          createBuffer(dataSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
    1493             VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
    1494             stagingBuffer, stagingBufferMemory);
    1495 
    1496          void* data;
    1497          vkMapMemory(device, stagingBufferMemory, 0, dataSize, 0, &data);
    1498          memcpy(data, srcData, (size_t) dataSize);
    1499          vkUnmapMemory(device, stagingBufferMemory);
    1500 
    1501          copyBuffer(stagingBuffer, dst, 0, dstOffset, dataSize);
    1502 
    1503          vkDestroyBuffer(device, stagingBuffer, nullptr);
    1504          vkFreeMemory(device, stagingBufferMemory, nullptr);
    1505       }
    1506 
    1507       void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize srcOffset, VkDeviceSize dstOffset,
    1508             VkDeviceSize size) {
     1481      void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size) {
    15091482         VkCommandBuffer commandBuffer = beginSingleTimeCommands();
    15101483
    1511          VkBufferCopy copyRegion = { srcOffset, dstOffset, size };
     1484         VkBufferCopy copyRegion = {};
     1485         copyRegion.size = size;
    15121486         vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, 1, &copyRegion);
    15131487
     
    17091683      }
    17101684
    1711       bool addObjectToScene(GraphicsPipelineInfo& info,
    1712             const void* vertexData, int vertexSize, size_t numVertices,
    1713             vector<uint16_t>& indices, size_t numIndices) {
    1714          int indexSize = sizeof(uint16_t);
    1715 
    1716          for (uint16_t& idx : indices) {
    1717             idx += info.numVertices;
    1718          }
    1719 
    1720          if (info.numVertices + numVertices > info.vertexCapacity) {
    1721             cout << "ERROR: Need to resize vertex buffers" << endl;
    1722          } else if (info.numIndices + numIndices > info.indexCapacity) {
    1723             cout << "ERROR: Need to resize index buffers" << endl;
    1724          } else {
    1725             cout << "Added object to scene" << endl;
    1726 
    1727             copyDataToBuffer(vertexData, info.vertexBuffer, info.numVertices * vertexSize, numVertices * vertexSize);
    1728             info.numVertices += numVertices;
    1729 
    1730             copyDataToBuffer(indices.data(), info.indexBuffer, info.numIndices * indexSize, numIndices * indexSize);
    1731             info.numIndices += numIndices;
    1732 
    1733             vkFreeCommandBuffers(device, commandPool, static_cast<uint32_t>(commandBuffers.size()), commandBuffers.data());
    1734             createCommandBuffers();
    1735 
    1736             return true;
    1737          }
    1738 
    1739          return false;
    1740       }
    1741 
    17421685/*** START OF REFACTORED CODE ***/
    17431686      void mainLoop() {
     
    17521695               }
    17531696               if (e.type == SDL_KEYDOWN) {
    1754                   if (e.key.keysym.sym == SDLK_SPACE) {
    1755                      float zOffset = -0.5f + (0.5f * numPlanes);
    1756                      vector<Vertex> vertices = {
    1757                         {{-0.5f, -0.5f,  zOffset}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},
    1758                         {{ 0.5f, -0.5f,  zOffset}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},
    1759                         {{ 0.5f,  0.5f,  zOffset}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},
    1760                         {{-0.5f,  0.5f,  zOffset}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}
    1761                      };
    1762                      vector<uint16_t> indices = {
    1763                         0, 1, 2, 2, 3, 0
    1764                      };
    1765 
    1766                      if (addObjectToScene(scenePipeline,
    1767                            vertices.data(), sizeof(Vertex), vertices.size(),
    1768                            indices, indices.size())) {
    1769                         numPlanes++;
    1770                      }
    1771                   } else if (e.key.keysym.sym == SDLK_ESCAPE) {
     1697                  if (e.key.keysym.scancode == SDL_SCANCODE_ESCAPE) {
    17721698                     quit = true;
    17731699                  }
Note: See TracChangeset for help on using the changeset viewer.