Clean up resources, refactoring, compiler warnings

This commit is contained in:
saschawillems 2016-06-25 17:58:27 +02:00
parent 81bd22834e
commit 268d268859

View file

@ -53,7 +53,7 @@ public:
} vertices; } vertices;
struct { struct {
vkMeshLoader::MeshBuffer object; vkMeshLoader::MeshBuffer terrain;
vkMeshLoader::MeshBuffer skysphere; vkMeshLoader::MeshBuffer skysphere;
} meshes; } meshes;
@ -134,6 +134,7 @@ public:
// Note : Inherited destructor cleans up resources stored in base class // Note : Inherited destructor cleans up resources stored in base class
vkDestroyPipeline(device, pipelines.terrain, nullptr); vkDestroyPipeline(device, pipelines.terrain, nullptr);
vkDestroyPipeline(device, pipelines.wireframe, nullptr); vkDestroyPipeline(device, pipelines.wireframe, nullptr);
vkDestroyPipeline(device, pipelines.skysphere, nullptr);
vkDestroyPipelineLayout(device, pipelineLayouts.skysphere, nullptr); vkDestroyPipelineLayout(device, pipelineLayouts.skysphere, nullptr);
vkDestroyPipelineLayout(device, pipelineLayouts.terrain, nullptr); vkDestroyPipelineLayout(device, pipelineLayouts.terrain, nullptr);
@ -141,7 +142,8 @@ public:
vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.terrain, nullptr); vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.terrain, nullptr);
vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.skysphere, nullptr); vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.skysphere, nullptr);
vkMeshLoader::freeMeshBufferResources(device, &meshes.object); vkMeshLoader::freeMeshBufferResources(device, &meshes.terrain);
vkMeshLoader::freeMeshBufferResources(device, &meshes.skysphere);
vkDestroyBuffer(device, uniformData.terrainTessellation.buffer, nullptr); vkDestroyBuffer(device, uniformData.terrainTessellation.buffer, nullptr);
vkFreeMemory(device, uniformData.terrainTessellation.memory, nullptr); vkFreeMemory(device, uniformData.terrainTessellation.memory, nullptr);
@ -314,9 +316,9 @@ public:
// Render // Render
vkCmdBindPipeline(drawCmdBuffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, wireframe ? pipelines.wireframe : pipelines.terrain); vkCmdBindPipeline(drawCmdBuffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, wireframe ? pipelines.wireframe : pipelines.terrain);
vkCmdBindDescriptorSets(drawCmdBuffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayouts.terrain, 0, 1, &descriptorSets.terrain, 0, NULL); vkCmdBindDescriptorSets(drawCmdBuffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayouts.terrain, 0, 1, &descriptorSets.terrain, 0, NULL);
vkCmdBindVertexBuffers(drawCmdBuffers[i], VERTEX_BUFFER_BIND_ID, 1, &meshes.object.vertices.buf, offsets); vkCmdBindVertexBuffers(drawCmdBuffers[i], VERTEX_BUFFER_BIND_ID, 1, &meshes.terrain.vertices.buf, offsets);
vkCmdBindIndexBuffer(drawCmdBuffers[i], meshes.object.indices.buf, 0, VK_INDEX_TYPE_UINT32); vkCmdBindIndexBuffer(drawCmdBuffers[i], meshes.terrain.indices.buf, 0, VK_INDEX_TYPE_UINT32);
vkCmdDrawIndexed(drawCmdBuffers[i], meshes.object.indexCount, 1, 0, 0, 0); vkCmdDrawIndexed(drawCmdBuffers[i], meshes.terrain.indexCount, 1, 0, 0, 0);
// End pipeline statistics query // End pipeline statistics query
vkCmdEndQuery(drawCmdBuffers[i], queryPool, 0); vkCmdEndQuery(drawCmdBuffers[i], queryPool, 0);
@ -342,7 +344,7 @@ public:
HeightMap(std::string filename, uint32_t patchsize) HeightMap(std::string filename, uint32_t patchsize)
{ {
gli::texture2D heightTex(gli::load(filename)); gli::texture2D heightTex(gli::load(filename));
dim = heightTex.dimensions().x; dim = static_cast<uint32_t>(heightTex.dimensions().x);
heightdata = new uint16_t[dim * dim]; heightdata = new uint16_t[dim * dim];
memcpy(heightdata, heightTex.data(), heightTex.size()); memcpy(heightdata, heightTex.data(), heightTex.size());
this->scale = dim / patchsize; this->scale = dim / patchsize;
@ -436,7 +438,7 @@ public:
indices[index + 3] = indices[index] + 1; indices[index + 3] = indices[index] + 1;
} }
} }
meshes.object.indexCount = (PATCH_SIZE - 1) * (PATCH_SIZE - 1) * 4; meshes.terrain.indexCount = (PATCH_SIZE - 1) * (PATCH_SIZE - 1) * 4;
uint32_t vertexBufferSize = (PATCH_SIZE * PATCH_SIZE * 4) * sizeof(Vertex); uint32_t vertexBufferSize = (PATCH_SIZE * PATCH_SIZE * 4) * sizeof(Vertex);
uint32_t indexBufferSize = (w * w * 4) * sizeof(uint32_t); uint32_t indexBufferSize = (w * w * 4) * sizeof(uint32_t);
@ -469,16 +471,16 @@ public:
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
vertexBufferSize, vertexBufferSize,
nullptr, nullptr,
&meshes.object.vertices.buf, &meshes.terrain.vertices.buf,
&meshes.object.vertices.mem); &meshes.terrain.vertices.mem);
createBuffer( createBuffer(
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
indexBufferSize, indexBufferSize,
nullptr, nullptr,
&meshes.object.indices.buf, &meshes.terrain.indices.buf,
&meshes.object.indices.mem); &meshes.terrain.indices.mem);
// Copy from staging buffers // Copy from staging buffers
VkCommandBuffer copyCmd = VulkanExampleBase::createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true); VkCommandBuffer copyCmd = VulkanExampleBase::createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
@ -489,7 +491,7 @@ public:
vkCmdCopyBuffer( vkCmdCopyBuffer(
copyCmd, copyCmd,
vertexStaging.buffer, vertexStaging.buffer,
meshes.object.vertices.buf, meshes.terrain.vertices.buf,
1, 1,
&copyRegion); &copyRegion);
@ -497,7 +499,7 @@ public:
vkCmdCopyBuffer( vkCmdCopyBuffer(
copyCmd, copyCmd,
indexStaging.buffer, indexStaging.buffer,
meshes.object.indices.buf, meshes.terrain.indices.buf,
1, 1,
&copyRegion); &copyRegion);
@ -551,9 +553,9 @@ public:
sizeof(float) * 6); sizeof(float) * 6);
vertices.inputState = vkTools::initializers::pipelineVertexInputStateCreateInfo(); vertices.inputState = vkTools::initializers::pipelineVertexInputStateCreateInfo();
vertices.inputState.vertexBindingDescriptionCount = vertices.bindingDescriptions.size(); vertices.inputState.vertexBindingDescriptionCount = static_cast<uint32_t>(vertices.bindingDescriptions.size());
vertices.inputState.pVertexBindingDescriptions = vertices.bindingDescriptions.data(); vertices.inputState.pVertexBindingDescriptions = vertices.bindingDescriptions.data();
vertices.inputState.vertexAttributeDescriptionCount = vertices.attributeDescriptions.size(); vertices.inputState.vertexAttributeDescriptionCount = static_cast<uint32_t>(vertices.attributeDescriptions.size());
vertices.inputState.pVertexAttributeDescriptions = vertices.attributeDescriptions.data(); vertices.inputState.pVertexAttributeDescriptions = vertices.attributeDescriptions.data();
} }
@ -567,7 +569,7 @@ public:
VkDescriptorPoolCreateInfo descriptorPoolInfo = VkDescriptorPoolCreateInfo descriptorPoolInfo =
vkTools::initializers::descriptorPoolCreateInfo( vkTools::initializers::descriptorPoolCreateInfo(
poolSizes.size(), static_cast<uint32_t>(poolSizes.size()),
poolSizes.data(), poolSizes.data(),
2); 2);
@ -656,7 +658,7 @@ public:
2, 2,
&textures.terrainArray.descriptor), &textures.terrainArray.descriptor),
}; };
vkUpdateDescriptorSets(device, writeDescriptorSets.size(), writeDescriptorSets.data(), 0, NULL); vkUpdateDescriptorSets(device, static_cast<uint32_t>(writeDescriptorSets.size()), writeDescriptorSets.data(), 0, NULL);
// Skysphere // Skysphere
allocInfo = vkTools::initializers::descriptorSetAllocateInfo(descriptorPool, &descriptorSetLayouts.skysphere, 1); allocInfo = vkTools::initializers::descriptorSetAllocateInfo(descriptorPool, &descriptorSetLayouts.skysphere, 1);
@ -677,7 +679,7 @@ public:
1, 1,
&textures.skySphere.descriptor), &textures.skySphere.descriptor),
}; };
vkUpdateDescriptorSets(device, writeDescriptorSets.size(), writeDescriptorSets.data(), 0, NULL); vkUpdateDescriptorSets(device, static_cast<uint32_t>(writeDescriptorSets.size()), writeDescriptorSets.data(), 0, NULL);
} }
void preparePipelines() void preparePipelines()
@ -727,7 +729,7 @@ public:
VkPipelineDynamicStateCreateInfo dynamicState = VkPipelineDynamicStateCreateInfo dynamicState =
vkTools::initializers::pipelineDynamicStateCreateInfo( vkTools::initializers::pipelineDynamicStateCreateInfo(
dynamicStateEnables.data(), dynamicStateEnables.data(),
dynamicStateEnables.size(), static_cast<uint32_t>(dynamicStateEnables.size()),
0); 0);
// We render the terrain as a grid of quad patches // We render the terrain as a grid of quad patches