asdf
This commit is contained in:
@@ -41,6 +41,7 @@ TextureLoading::~TextureLoading()
|
|||||||
vkDestroyPipelineLayout(get_device().get_handle(), pipeline_layout, nullptr);
|
vkDestroyPipelineLayout(get_device().get_handle(), pipeline_layout, nullptr);
|
||||||
vkDestroyPipelineLayout(get_device().get_handle(), pipeline_layout_bg, nullptr);
|
vkDestroyPipelineLayout(get_device().get_handle(), pipeline_layout_bg, nullptr);
|
||||||
vkDestroyDescriptorSetLayout(get_device().get_handle(), descriptor_set_layout, nullptr);
|
vkDestroyDescriptorSetLayout(get_device().get_handle(), descriptor_set_layout, nullptr);
|
||||||
|
vkDestroyDescriptorSetLayout(get_device().get_handle(), descriptor_set_layout_bg, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy_texture(texture);
|
destroy_texture(texture);
|
||||||
@@ -483,6 +484,7 @@ void TextureLoading::build_command_buffers()
|
|||||||
VkRect2D scissor = vkb::initializers::rect2D(width, height, 0, 0);
|
VkRect2D scissor = vkb::initializers::rect2D(width, height, 0, 0);
|
||||||
vkCmdSetScissor(draw_cmd_buffers[i], 0, 1, &scissor);
|
vkCmdSetScissor(draw_cmd_buffers[i], 0, 1, &scissor);
|
||||||
|
|
||||||
|
vkCmdBindDescriptorSets(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_bg, 0, 1, &descriptor_set_bg, 0, NULL);
|
||||||
vkCmdBindPipeline(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.background);
|
vkCmdBindPipeline(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.background);
|
||||||
vkCmdDraw(draw_cmd_buffers[i], 6, 1, 0, 0);
|
vkCmdDraw(draw_cmd_buffers[i], 6, 1, 0, 0);
|
||||||
|
|
||||||
@@ -557,7 +559,7 @@ void TextureLoading::setup_descriptor_pool()
|
|||||||
std::vector<VkDescriptorPoolSize> pool_sizes =
|
std::vector<VkDescriptorPoolSize> pool_sizes =
|
||||||
{
|
{
|
||||||
vkb::initializers::descriptor_pool_size(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1),
|
vkb::initializers::descriptor_pool_size(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1),
|
||||||
vkb::initializers::descriptor_pool_size(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1) };
|
vkb::initializers::descriptor_pool_size(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 2) };
|
||||||
|
|
||||||
VkDescriptorPoolCreateInfo descriptor_pool_create_info =
|
VkDescriptorPoolCreateInfo descriptor_pool_create_info =
|
||||||
vkb::initializers::descriptor_pool_create_info(
|
vkb::initializers::descriptor_pool_create_info(
|
||||||
@@ -570,9 +572,27 @@ void TextureLoading::setup_descriptor_pool()
|
|||||||
|
|
||||||
void TextureLoading::setup_descriptor_set_layout_bg()
|
void TextureLoading::setup_descriptor_set_layout_bg()
|
||||||
{
|
{
|
||||||
VkPipelineLayoutCreateInfo layout_info{
|
std::vector<VkDescriptorSetLayoutBinding> set_layout_bindings =
|
||||||
.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO };
|
{
|
||||||
vkCreatePipelineLayout(get_device().get_handle(), &layout_info, nullptr, &pipeline_layout_bg);
|
// Binding 1 : Fragment shader image sampler
|
||||||
|
vkb::initializers::descriptor_set_layout_binding(
|
||||||
|
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||||
|
VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
|
0) };
|
||||||
|
|
||||||
|
VkDescriptorSetLayoutCreateInfo descriptor_layout =
|
||||||
|
vkb::initializers::descriptor_set_layout_create_info(
|
||||||
|
set_layout_bindings.data(),
|
||||||
|
static_cast<uint32_t>(set_layout_bindings.size()));
|
||||||
|
|
||||||
|
VK_CHECK(vkCreateDescriptorSetLayout(get_device().get_handle(), &descriptor_layout, nullptr, &descriptor_set_layout_bg));
|
||||||
|
|
||||||
|
VkPipelineLayoutCreateInfo pipeline_layout_create_info =
|
||||||
|
vkb::initializers::pipeline_layout_create_info(
|
||||||
|
&descriptor_set_layout_bg,
|
||||||
|
1);
|
||||||
|
|
||||||
|
VK_CHECK(vkCreatePipelineLayout(get_device().get_handle(), &pipeline_layout_create_info, nullptr, &pipeline_layout_bg));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextureLoading::setup_descriptor_set_layout()
|
void TextureLoading::setup_descriptor_set_layout()
|
||||||
@@ -643,6 +663,35 @@ void TextureLoading::setup_descriptor_set()
|
|||||||
vkUpdateDescriptorSets(get_device().get_handle(), static_cast<uint32_t>(write_descriptor_sets.size()), write_descriptor_sets.data(), 0, NULL);
|
vkUpdateDescriptorSets(get_device().get_handle(), static_cast<uint32_t>(write_descriptor_sets.size()), write_descriptor_sets.data(), 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextureLoading::setup_descriptor_set_bg()
|
||||||
|
{
|
||||||
|
VkDescriptorSetAllocateInfo alloc_info =
|
||||||
|
vkb::initializers::descriptor_set_allocate_info(
|
||||||
|
descriptor_pool,
|
||||||
|
&descriptor_set_layout_bg,
|
||||||
|
1);
|
||||||
|
|
||||||
|
VK_CHECK(vkAllocateDescriptorSets(get_device().get_handle(), &alloc_info, &descriptor_set_bg));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VkDescriptorImageInfo image_descriptor;
|
||||||
|
image_descriptor.imageView = cam_text.view;
|
||||||
|
image_descriptor.sampler = cam_text.sampler;
|
||||||
|
image_descriptor.imageLayout = cam_text.image_layout;
|
||||||
|
|
||||||
|
std::vector<VkWriteDescriptorSet> write_descriptor_sets =
|
||||||
|
{
|
||||||
|
vkb::initializers::write_descriptor_set(
|
||||||
|
descriptor_set_bg,
|
||||||
|
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||||
|
0,
|
||||||
|
&image_descriptor)
|
||||||
|
};
|
||||||
|
|
||||||
|
vkUpdateDescriptorSets(get_device().get_handle(), static_cast<uint32_t>(write_descriptor_sets.size()), write_descriptor_sets.data(), 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void TextureLoading::prepare_pipeline_bg()
|
void TextureLoading::prepare_pipeline_bg()
|
||||||
{
|
{
|
||||||
VkPipelineInputAssemblyStateCreateInfo input_assembly_state =
|
VkPipelineInputAssemblyStateCreateInfo input_assembly_state =
|
||||||
@@ -864,6 +913,7 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options)
|
|||||||
prepare_pipeline_bg();
|
prepare_pipeline_bg();
|
||||||
setup_descriptor_pool();
|
setup_descriptor_pool();
|
||||||
setup_descriptor_set();
|
setup_descriptor_set();
|
||||||
|
setup_descriptor_set_bg();
|
||||||
build_command_buffers();
|
build_command_buffers();
|
||||||
prepared = true;
|
prepared = true;
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -75,7 +75,10 @@ public:
|
|||||||
VkPipelineLayout pipeline_layout;
|
VkPipelineLayout pipeline_layout;
|
||||||
VkPipelineLayout pipeline_layout_bg;
|
VkPipelineLayout pipeline_layout_bg;
|
||||||
VkDescriptorSet descriptor_set;
|
VkDescriptorSet descriptor_set;
|
||||||
|
VkDescriptorSet descriptor_set_bg;
|
||||||
|
|
||||||
VkDescriptorSetLayout descriptor_set_layout;
|
VkDescriptorSetLayout descriptor_set_layout;
|
||||||
|
VkDescriptorSetLayout descriptor_set_layout_bg;
|
||||||
|
|
||||||
TextureLoading();
|
TextureLoading();
|
||||||
~TextureLoading();
|
~TextureLoading();
|
||||||
@@ -89,6 +92,7 @@ public:
|
|||||||
void setup_descriptor_set_layout();
|
void setup_descriptor_set_layout();
|
||||||
void setup_descriptor_set_layout_bg();
|
void setup_descriptor_set_layout_bg();
|
||||||
void setup_descriptor_set();
|
void setup_descriptor_set();
|
||||||
|
void setup_descriptor_set_bg();
|
||||||
void prepare_pipelines();
|
void prepare_pipelines();
|
||||||
void prepare_uniform_buffers();
|
void prepare_uniform_buffers();
|
||||||
void update_uniform_buffers();
|
void update_uniform_buffers();
|
||||||
|
|||||||
Reference in New Issue
Block a user