MCPcopy Create free account
hub / github.com/OpenNFS/OpenNFS / createGraphicsPipeline

Method createGraphicsPipeline

src/Renderer/vkRenderer.cpp:433–550  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

431}
432
433void vkRenderer::createGraphicsPipeline() {
434 auto vertShaderCode = readFile("../shaders/vk/shader.vert.spv");
435 auto fragShaderCode = readFile("../shaders/vk/shader.frag.spv");
436
437 VkShaderModule vertShaderModule = createShaderModule(vertShaderCode);
438 VkShaderModule fragShaderModule = createShaderModule(fragShaderCode);
439
440 VkPipelineShaderStageCreateInfo vertShaderStageInfo = {};
441 vertShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
442 vertShaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
443 vertShaderStageInfo.module = vertShaderModule;
444 vertShaderStageInfo.pName = "main";
445
446 VkPipelineShaderStageCreateInfo fragShaderStageInfo = {};
447 fragShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
448 fragShaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
449 fragShaderStageInfo.module = fragShaderModule;
450 fragShaderStageInfo.pName = "main";
451
452 VkPipelineShaderStageCreateInfo shaderStages[] = {vertShaderStageInfo, fragShaderStageInfo};
453
454 VkPipelineVertexInputStateCreateInfo vertexInputInfo = {};
455 vertexInputInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
456
457 auto bindingDescription = Vertex::getBindingDescription();
458 auto attributeDescriptions = Vertex::getAttributeDescriptions();
459
460 vertexInputInfo.vertexBindingDescriptionCount = 1;
461 vertexInputInfo.vertexAttributeDescriptionCount = static_cast<uint32_t>(attributeDescriptions.size());
462 vertexInputInfo.pVertexBindingDescriptions = &bindingDescription;
463 vertexInputInfo.pVertexAttributeDescriptions = attributeDescriptions.data();
464
465 VkPipelineInputAssemblyStateCreateInfo inputAssembly = {};
466 inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
467 inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
468 inputAssembly.primitiveRestartEnable = VK_FALSE;
469
470 VkViewport viewport = {};
471 viewport.x = 0.0f;
472 viewport.y = 0.0f;
473 viewport.width = (float) swapChainExtent.width;
474 viewport.height = (float) swapChainExtent.height;
475 viewport.minDepth = 0.0f;
476 viewport.maxDepth = 1.0f;
477
478 VkRect2D scissor = {};
479 scissor.offset = {0, 0};
480 scissor.extent = swapChainExtent;
481
482 VkPipelineViewportStateCreateInfo viewportState = {};
483 viewportState.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
484 viewportState.viewportCount = 1;
485 viewportState.pViewports = &viewport;
486 viewportState.scissorCount = 1;
487 viewportState.pScissors = &scissor;
488
489 VkPipelineRasterizationStateCreateInfo rasterizer = {};
490 rasterizer.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;

Callers

nothing calls this directly

Calls 1

readFileFunction · 0.85

Tested by

no test coverage detected