Changeset b8777b7 in opengl-game for vulkan-game.cpp
- Timestamp:
- Nov 16, 2019, 8:38:22 PM (5 years ago)
- Branches:
- feature/imgui-sdl, master, points-test
- Children:
- 5a0242e
- Parents:
- cd487fb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vulkan-game.cpp
rcd487fb rb8777b7 194 194 createUniformBuffers(); 195 195 196 vector< Vertex> sceneVertices = {197 {{-0.5f, -0.5f, - 0.5f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},198 {{ 0.5f, -0.5f, - 0.5f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},199 {{ 0.5f, 0.5f, - 0.5f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},200 {{-0.5f, 0.5f, - 0.5f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}},201 202 {{-0.5f, -0.5f, 0.0f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}},203 {{ 0.5f, -0.5f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}},204 {{ 0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},205 {{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}196 vector<ModelVertex> sceneVertices = { 197 {{-0.5f, -0.5f, -2.0f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}}, 198 {{ 0.5f, -0.5f, -2.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}}, 199 {{ 0.5f, 0.5f, -2.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}}, 200 {{-0.5f, 0.5f, -2.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}, 201 202 {{-0.5f, -0.5f, -1.5f}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}}, 203 {{ 0.5f, -0.5f, -1.5f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}}, 204 {{ 0.5f, 0.5f, -1.5f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}}, 205 {{-0.5f, 0.5f, -1.5f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}} 206 206 }; 207 207 vector<uint16_t> sceneIndices = { … … 210 210 }; 211 211 212 graphicsPipelines.push_back(GraphicsPipeline_Vulkan(physicalDevice, device, renderPass,213 { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, sizeof( Vertex)));214 215 graphicsPipelines.back().bindData(sceneVertices, sceneIndices, commandPool, graphicsQueue);216 217 graphicsPipelines.back().addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&Vertex::pos));218 graphicsPipelines.back().addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&Vertex::color));219 graphicsPipelines.back().addAttribute(VK_FORMAT_R32G32_SFLOAT, offset_of(&Vertex::texCoord));220 221 graphicsPipelines.back().addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,212 modelPipeline = GraphicsPipeline_Vulkan<ModelVertex>(physicalDevice, device, renderPass, 213 { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, sizeof(ModelVertex)); 214 215 modelPipeline.bindData(sceneVertices, sceneIndices, commandPool, graphicsQueue); 216 217 modelPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&ModelVertex::pos)); 218 modelPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&ModelVertex::color)); 219 modelPipeline.addAttribute(VK_FORMAT_R32G32_SFLOAT, offset_of(&ModelVertex::texCoord)); 220 221 modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 222 222 VK_SHADER_STAGE_VERTEX_BIT, &uniformBufferInfoList); 223 graphicsPipelines.back().addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,223 modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 224 224 VK_SHADER_STAGE_FRAGMENT_BIT, &floorTextureImageDescriptor); 225 225 226 graphicsPipelines.back().createDescriptorSetLayout();227 graphicsPipelines.back().createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv");228 graphicsPipelines.back().createDescriptorPool(swapChainImages);229 graphicsPipelines.back().createDescriptorSets(swapChainImages);226 modelPipeline.createDescriptorSetLayout(); 227 modelPipeline.createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv"); 228 modelPipeline.createDescriptorPool(swapChainImages); 229 modelPipeline.createDescriptorSets(swapChainImages); 230 230 231 231 vector<OverlayVertex> overlayVertices = { … … 239 239 }; 240 240 241 graphicsPipelines.push_back(GraphicsPipeline_Vulkan(physicalDevice, device, renderPass,242 { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, sizeof(OverlayVertex)) );243 244 graphicsPipelines.back().bindData(overlayVertices, overlayIndices, commandPool, graphicsQueue);245 246 graphicsPipelines.back().addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&OverlayVertex::pos));247 graphicsPipelines.back().addAttribute(VK_FORMAT_R32G32_SFLOAT, offset_of(&OverlayVertex::texCoord));248 249 graphicsPipelines.back().addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,241 overlayPipeline = GraphicsPipeline_Vulkan<OverlayVertex>(physicalDevice, device, renderPass, 242 { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, sizeof(OverlayVertex)); 243 244 overlayPipeline.bindData(overlayVertices, overlayIndices, commandPool, graphicsQueue); 245 246 overlayPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&OverlayVertex::pos)); 247 overlayPipeline.addAttribute(VK_FORMAT_R32G32_SFLOAT, offset_of(&OverlayVertex::texCoord)); 248 249 overlayPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 250 250 VK_SHADER_STAGE_FRAGMENT_BIT, &sdlOverlayImageDescriptor); 251 251 252 graphicsPipelines.back().createDescriptorSetLayout();253 graphicsPipelines.back().createPipeline("shaders/overlay-vert.spv", "shaders/overlay-frag.spv");254 graphicsPipelines.back().createDescriptorPool(swapChainImages);255 graphicsPipelines.back().createDescriptorSets(swapChainImages);256 257 cout << "Created " << graphicsPipelines.size() << "graphics pipelines" << endl;252 overlayPipeline.createDescriptorSetLayout(); 253 overlayPipeline.createPipeline("shaders/overlay-vert.spv", "shaders/overlay-frag.spv"); 254 overlayPipeline.createDescriptorPool(swapChainImages); 255 overlayPipeline.createDescriptorSets(swapChainImages); 256 257 cout << "Created all the graphics pipelines" << endl; 258 258 259 259 numPlanes = 2; … … 290 290 } else if (e.key.keycode == SDL_SCANCODE_SPACE) { 291 291 cout << "Adding a plane" << endl; 292 float zOffset = - 0.5f + (0.5f * numPlanes);293 vector< Vertex> vertices = {292 float zOffset = -2.0f + (0.5f * numPlanes); 293 vector<ModelVertex> vertices = { 294 294 {{-0.5f, -0.5f, zOffset}, {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f}}, 295 295 {{ 0.5f, -0.5f, zOffset}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f}}, … … 301 301 }; 302 302 303 if (graphicsPipelines[0].addObject(vertices, indices, commandPool, graphicsQueue)) { 304 vkFreeCommandBuffers(device, commandPool, static_cast<uint32_t>(commandBuffers.size()), commandBuffers.data()); 305 createCommandBuffers(); 306 307 numPlanes++; 308 } 303 // TODO: Encapsulate these lines into an addObject() function in vulkan-game 304 305 vkDeviceWaitIdle(device); 306 vkFreeCommandBuffers(device, commandPool, static_cast<uint32_t>(commandBuffers.size()), commandBuffers.data()); 307 308 modelPipeline.addObject(vertices, indices, commandPool, graphicsQueue); 309 310 createCommandBuffers(); 311 312 numPlanes++; 309 313 } else { 310 314 cout << "Key event detected" << endl; … … 429 433 vkDestroySampler(device, textureSampler, nullptr); 430 434 431 for (GraphicsPipeline_Vulkan pipeline : graphicsPipelines) { 432 pipeline.cleanupBuffers(); 433 } 435 modelPipeline.cleanupBuffers(); 436 overlayPipeline.cleanupBuffers(); 434 437 435 438 for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { … … 929 932 vkCmdBeginRenderPass(commandBuffers[i], &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE); 930 933 931 for (GraphicsPipeline_Vulkan pipeline : graphicsPipelines) { 932 pipeline.createRenderCommands(commandBuffers[i], i); 933 } 934 modelPipeline.createRenderCommands(commandBuffers[i], i); 935 overlayPipeline.createRenderCommands(commandBuffers[i], i); 934 936 935 937 vkCmdEndRenderPass(commandBuffers[i]); … … 986 988 createUniformBuffers(); 987 989 988 graphicsPipelines[0].updateRenderPass(renderPass);989 graphicsPipelines[0].createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv");990 graphicsPipelines[0].createDescriptorPool(swapChainImages);991 graphicsPipelines[0].createDescriptorSets(swapChainImages);992 993 graphicsPipelines[1].updateRenderPass(renderPass);994 graphicsPipelines[1].createPipeline("shaders/overlay-vert.spv", "shaders/overlay-frag.spv");995 graphicsPipelines[1].createDescriptorPool(swapChainImages);996 graphicsPipelines[1].createDescriptorSets(swapChainImages);990 modelPipeline.updateRenderPass(renderPass); 991 modelPipeline.createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv"); 992 modelPipeline.createDescriptorPool(swapChainImages); 993 modelPipeline.createDescriptorSets(swapChainImages); 994 995 overlayPipeline.updateRenderPass(renderPass); 996 overlayPipeline.createPipeline("shaders/overlay-vert.spv", "shaders/overlay-frag.spv"); 997 overlayPipeline.createDescriptorPool(swapChainImages); 998 overlayPipeline.createDescriptorSets(swapChainImages); 997 999 998 1000 createCommandBuffers(); … … 1026 1028 vkFreeCommandBuffers(device, commandPool, static_cast<uint32_t>(commandBuffers.size()), commandBuffers.data()); 1027 1029 1028 for (GraphicsPipeline_Vulkan pipeline : graphicsPipelines) { 1029 pipeline.cleanup(); 1030 } 1030 modelPipeline.cleanup(); 1031 overlayPipeline.cleanup(); 1031 1032 1032 1033 vkDestroyRenderPass(device, renderPass, nullptr);
Note:
See TracChangeset
for help on using the changeset viewer.