Properly transition image layouts
This commit is contained in:
parent
0c970b0236
commit
7bdda6d1fa
4 changed files with 51 additions and 21 deletions
|
@ -113,12 +113,12 @@ void DoFPass::createDescriptorSet(RenderTarget* target) {
|
||||||
bokehImageInfo.sampler = bokehSampler_;
|
bokehImageInfo.sampler = bokehSampler_;
|
||||||
|
|
||||||
VkDescriptorImageInfo sceneImageInfo = {};
|
VkDescriptorImageInfo sceneImageInfo = {};
|
||||||
sceneImageInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
sceneImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
sceneImageInfo.imageView = target->offscreenColorImageViews[i];
|
sceneImageInfo.imageView = target->offscreenColorImageViews[i];
|
||||||
sceneImageInfo.sampler = bokehSampler_;
|
sceneImageInfo.sampler = bokehSampler_;
|
||||||
|
|
||||||
VkDescriptorImageInfo depthImageInfo = {};
|
VkDescriptorImageInfo depthImageInfo = {};
|
||||||
depthImageInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;;
|
depthImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;;
|
||||||
depthImageInfo.imageView = target->offscreenDepthImageViews[i];
|
depthImageInfo.imageView = target->offscreenDepthImageViews[i];
|
||||||
depthImageInfo.sampler = bokehSampler_;
|
depthImageInfo.sampler = bokehSampler_;
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ void DoFPass::createRenderPass() {
|
||||||
colorAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
colorAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||||
colorAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
colorAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
colorAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
colorAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
colorAttachment.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
colorAttachment.finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
VkAttachmentReference colorAttachmentRef = {};
|
VkAttachmentReference colorAttachmentRef = {};
|
||||||
colorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
colorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||||
|
@ -225,7 +225,7 @@ void DoFPass::createPipeline() {
|
||||||
vertShaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
|
vertShaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
|
||||||
vertShaderStageInfo.module = vertShaderModule;
|
vertShaderStageInfo.module = vertShaderModule;
|
||||||
vertShaderStageInfo.pName = "main";
|
vertShaderStageInfo.pName = "main";
|
||||||
|
|
||||||
VkPipelineShaderStageCreateInfo fragShaderStageInfo = {};
|
VkPipelineShaderStageCreateInfo fragShaderStageInfo = {};
|
||||||
fragShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
fragShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
||||||
fragShaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
fragShaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
|
|
|
@ -45,22 +45,22 @@ void PostPass::createDescriptorSet(RenderTarget* target) {
|
||||||
|
|
||||||
for(uint32_t i = 0; i < target->numImages; i++) {
|
for(uint32_t i = 0; i < target->numImages; i++) {
|
||||||
VkDescriptorImageInfo sceneImageInfo = {};
|
VkDescriptorImageInfo sceneImageInfo = {};
|
||||||
sceneImageInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
sceneImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
sceneImageInfo.imageView = target->offscreenColorImageViews[i];
|
sceneImageInfo.imageView = target->offscreenColorImageViews[i];
|
||||||
sceneImageInfo.sampler = offscreenSampler_;
|
sceneImageInfo.sampler = offscreenSampler_;
|
||||||
|
|
||||||
VkDescriptorImageInfo depthImageInfo = {};
|
VkDescriptorImageInfo depthImageInfo = {};
|
||||||
depthImageInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;;
|
depthImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;;
|
||||||
depthImageInfo.imageView = target->offscreenDepthImageViews[i];
|
depthImageInfo.imageView = target->offscreenDepthImageViews[i];
|
||||||
depthImageInfo.sampler = offscreenSampler_;
|
depthImageInfo.sampler = offscreenSampler_;
|
||||||
|
|
||||||
VkDescriptorImageInfo nearFieldImageInfo = {};
|
VkDescriptorImageInfo nearFieldImageInfo = {};
|
||||||
nearFieldImageInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
nearFieldImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
nearFieldImageInfo.imageView = target->nearFieldImageViews[i];
|
nearFieldImageInfo.imageView = target->nearFieldImageViews[i];
|
||||||
nearFieldImageInfo.sampler = offscreenSampler_;
|
nearFieldImageInfo.sampler = offscreenSampler_;
|
||||||
|
|
||||||
VkDescriptorImageInfo farFieldImageInfo = {};
|
VkDescriptorImageInfo farFieldImageInfo = {};
|
||||||
farFieldImageInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
farFieldImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
farFieldImageInfo.imageView = target->farFieldImageViews[i];
|
farFieldImageInfo.imageView = target->farFieldImageViews[i];
|
||||||
farFieldImageInfo.sampler = offscreenSampler_;
|
farFieldImageInfo.sampler = offscreenSampler_;
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ void PostPass::createDescriptorSet(RenderTarget* target) {
|
||||||
sceneDescriptorWrite.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
sceneDescriptorWrite.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
sceneDescriptorWrite.dstSet = target->postSets[i];
|
sceneDescriptorWrite.dstSet = target->postSets[i];
|
||||||
sceneDescriptorWrite.pImageInfo = &sceneImageInfo;
|
sceneDescriptorWrite.pImageInfo = &sceneImageInfo;
|
||||||
|
|
||||||
VkWriteDescriptorSet depthDescriptorWrite = {};
|
VkWriteDescriptorSet depthDescriptorWrite = {};
|
||||||
depthDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
depthDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
depthDescriptorWrite.descriptorCount = 1;
|
depthDescriptorWrite.descriptorCount = 1;
|
||||||
|
@ -78,7 +78,7 @@ void PostPass::createDescriptorSet(RenderTarget* target) {
|
||||||
depthDescriptorWrite.dstBinding = 1;
|
depthDescriptorWrite.dstBinding = 1;
|
||||||
depthDescriptorWrite.dstSet = target->postSets[i];
|
depthDescriptorWrite.dstSet = target->postSets[i];
|
||||||
depthDescriptorWrite.pImageInfo = &depthImageInfo;
|
depthDescriptorWrite.pImageInfo = &depthImageInfo;
|
||||||
|
|
||||||
VkWriteDescriptorSet nearFieldDescriptorWrite = {};
|
VkWriteDescriptorSet nearFieldDescriptorWrite = {};
|
||||||
nearFieldDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
nearFieldDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
nearFieldDescriptorWrite.descriptorCount = 1;
|
nearFieldDescriptorWrite.descriptorCount = 1;
|
||||||
|
@ -86,7 +86,7 @@ void PostPass::createDescriptorSet(RenderTarget* target) {
|
||||||
nearFieldDescriptorWrite.dstBinding = 2;
|
nearFieldDescriptorWrite.dstBinding = 2;
|
||||||
nearFieldDescriptorWrite.dstSet = target->postSets[i];
|
nearFieldDescriptorWrite.dstSet = target->postSets[i];
|
||||||
nearFieldDescriptorWrite.pImageInfo = &nearFieldImageInfo;
|
nearFieldDescriptorWrite.pImageInfo = &nearFieldImageInfo;
|
||||||
|
|
||||||
VkWriteDescriptorSet farFieldDescriptorWrite = {};
|
VkWriteDescriptorSet farFieldDescriptorWrite = {};
|
||||||
farFieldDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
farFieldDescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
farFieldDescriptorWrite.descriptorCount = 1;
|
farFieldDescriptorWrite.descriptorCount = 1;
|
||||||
|
@ -94,7 +94,7 @@ void PostPass::createDescriptorSet(RenderTarget* target) {
|
||||||
farFieldDescriptorWrite.dstBinding = 3;
|
farFieldDescriptorWrite.dstBinding = 3;
|
||||||
farFieldDescriptorWrite.dstSet = target->postSets[i];
|
farFieldDescriptorWrite.dstSet = target->postSets[i];
|
||||||
farFieldDescriptorWrite.pImageInfo = &farFieldImageInfo;
|
farFieldDescriptorWrite.pImageInfo = &farFieldImageInfo;
|
||||||
|
|
||||||
const std::array<VkWriteDescriptorSet, 4> descriptorWrites = {
|
const std::array<VkWriteDescriptorSet, 4> descriptorWrites = {
|
||||||
sceneDescriptorWrite,
|
sceneDescriptorWrite,
|
||||||
depthDescriptorWrite,
|
depthDescriptorWrite,
|
||||||
|
@ -111,7 +111,7 @@ void PostPass::createDescriptorSetLayout() {
|
||||||
offscreenSamplerBinding.descriptorCount = 1;
|
offscreenSamplerBinding.descriptorCount = 1;
|
||||||
offscreenSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
offscreenSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
offscreenSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
offscreenSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
|
|
||||||
VkDescriptorSetLayoutBinding depthSamplerBinding = {};
|
VkDescriptorSetLayoutBinding depthSamplerBinding = {};
|
||||||
depthSamplerBinding.binding = 1;
|
depthSamplerBinding.binding = 1;
|
||||||
depthSamplerBinding.descriptorCount = 1;
|
depthSamplerBinding.descriptorCount = 1;
|
||||||
|
@ -123,20 +123,20 @@ void PostPass::createDescriptorSetLayout() {
|
||||||
nearFieldSamplerBinding.descriptorCount = 1;
|
nearFieldSamplerBinding.descriptorCount = 1;
|
||||||
nearFieldSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
nearFieldSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
nearFieldSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
nearFieldSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
|
|
||||||
VkDescriptorSetLayoutBinding farFieldSamplerBinding = {};
|
VkDescriptorSetLayoutBinding farFieldSamplerBinding = {};
|
||||||
farFieldSamplerBinding.binding = 3;
|
farFieldSamplerBinding.binding = 3;
|
||||||
farFieldSamplerBinding.descriptorCount = 1;
|
farFieldSamplerBinding.descriptorCount = 1;
|
||||||
farFieldSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
farFieldSamplerBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
farFieldSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
farFieldSamplerBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
|
|
||||||
const std::array<VkDescriptorSetLayoutBinding, 4> bindings = {
|
const std::array<VkDescriptorSetLayoutBinding, 4> bindings = {
|
||||||
offscreenSamplerBinding,
|
offscreenSamplerBinding,
|
||||||
depthSamplerBinding,
|
depthSamplerBinding,
|
||||||
nearFieldSamplerBinding,
|
nearFieldSamplerBinding,
|
||||||
farFieldSamplerBinding
|
farFieldSamplerBinding
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDescriptorSetLayoutCreateInfo createInfo = {};
|
VkDescriptorSetLayoutCreateInfo createInfo = {};
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
createInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
||||||
createInfo.bindingCount = bindings.size();
|
createInfo.bindingCount = bindings.size();
|
||||||
|
|
|
@ -1283,12 +1283,23 @@ void Renderer::createPresentationRenderPass() {
|
||||||
subpass.colorAttachmentCount = 1;
|
subpass.colorAttachmentCount = 1;
|
||||||
subpass.pColorAttachments = &colorAttachmentRef;
|
subpass.pColorAttachments = &colorAttachmentRef;
|
||||||
|
|
||||||
|
std::array<VkSubpassDependency, 1> dependencies;
|
||||||
|
dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL;
|
||||||
|
dependencies[0].dstSubpass = 0;
|
||||||
|
dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
|
||||||
|
dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||||
|
dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||||
|
dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
|
dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
|
||||||
|
|
||||||
VkRenderPassCreateInfo renderPassInfo = {};
|
VkRenderPassCreateInfo renderPassInfo = {};
|
||||||
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
|
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
|
||||||
renderPassInfo.attachmentCount = 1;
|
renderPassInfo.attachmentCount = 1;
|
||||||
renderPassInfo.pAttachments = &colorAttachment;
|
renderPassInfo.pAttachments = &colorAttachment;
|
||||||
renderPassInfo.subpassCount = 1;
|
renderPassInfo.subpassCount = 1;
|
||||||
renderPassInfo.pSubpasses = &subpass;
|
renderPassInfo.pSubpasses = &subpass;
|
||||||
|
renderPassInfo.dependencyCount = dependencies.size();
|
||||||
|
renderPassInfo.pDependencies = dependencies.data();
|
||||||
|
|
||||||
vkCreateRenderPass(device_, &renderPassInfo, nullptr, &presentationRenderPass_);
|
vkCreateRenderPass(device_, &renderPassInfo, nullptr, &presentationRenderPass_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ void WorldPass::createRenderPass() {
|
||||||
colorAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
colorAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||||
colorAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
colorAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
colorAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
colorAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
colorAttachment.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
colorAttachment.finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
VkAttachmentDescription depthAttachment = {};
|
VkAttachmentDescription depthAttachment = {};
|
||||||
depthAttachment.format = VK_FORMAT_D32_SFLOAT;
|
depthAttachment.format = VK_FORMAT_D32_SFLOAT;
|
||||||
|
@ -103,7 +103,7 @@ void WorldPass::createRenderPass() {
|
||||||
depthAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
depthAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||||
depthAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
depthAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
depthAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
depthAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
depthAttachment.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
|
depthAttachment.finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
VkAttachmentReference colorAttachmentRef = {};
|
VkAttachmentReference colorAttachmentRef = {};
|
||||||
colorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
colorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||||
|
@ -123,12 +123,31 @@ void WorldPass::createRenderPass() {
|
||||||
depthAttachment
|
depthAttachment
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::array<VkSubpassDependency, 2> dependencies;
|
||||||
|
dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL;
|
||||||
|
dependencies[0].dstSubpass = 0;
|
||||||
|
dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
|
||||||
|
dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||||
|
dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||||
|
dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
|
dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
|
||||||
|
|
||||||
|
dependencies[1].srcSubpass = 0;
|
||||||
|
dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL;
|
||||||
|
dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||||
|
dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
|
||||||
|
dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
|
dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||||
|
dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
|
||||||
|
|
||||||
VkRenderPassCreateInfo renderPassInfo = {};
|
VkRenderPassCreateInfo renderPassInfo = {};
|
||||||
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
|
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
|
||||||
renderPassInfo.attachmentCount = attachments.size();
|
renderPassInfo.attachmentCount = attachments.size();
|
||||||
renderPassInfo.pAttachments = attachments.data();
|
renderPassInfo.pAttachments = attachments.data();
|
||||||
renderPassInfo.subpassCount = 1;
|
renderPassInfo.subpassCount = 1;
|
||||||
renderPassInfo.pSubpasses = &subpass;
|
renderPassInfo.pSubpasses = &subpass;
|
||||||
|
renderPassInfo.dependencyCount = dependencies.size();
|
||||||
|
renderPassInfo.pDependencies = dependencies.data();
|
||||||
|
|
||||||
vkCreateRenderPass(renderer_.getDevice(), &renderPassInfo, nullptr, &renderPass_);
|
vkCreateRenderPass(renderer_.getDevice(), &renderPassInfo, nullptr, &renderPass_);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue