diff options
| author | Frederico Linhares <fred@linhares.blue> | 2022-08-30 17:45:40 -0300 | 
|---|---|---|
| committer | Frederico Linhares <fred@linhares.blue> | 2022-08-30 17:45:40 -0300 | 
| commit | f1f1576543bb4e0f3b9bc4cd0ba4a12a70546c3c (patch) | |
| tree | 87160fb7462ee5b4385ba6e9b0ccb51657b2f796 /src/vk/graphics_pipeline_3d.hpp | |
| parent | 42e03ddc3b28c41b81fb5410feb72750530ffa13 (diff) | |
feat Create 2d graphics pipeline
Diffstat (limited to 'src/vk/graphics_pipeline_3d.hpp')
| -rw-r--r-- | src/vk/graphics_pipeline_3d.hpp | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/src/vk/graphics_pipeline_3d.hpp b/src/vk/graphics_pipeline_3d.hpp new file mode 100644 index 0000000..2efbc00 --- /dev/null +++ b/src/vk/graphics_pipeline_3d.hpp @@ -0,0 +1,71 @@ +/* + * Copyright 2022 Frederico de Oliveira Linhares + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *     http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef CANDY_GEAR_VK_GRAPHICS_PIPELINE_3D_H +#define CANDY_GEAR_VK_GRAPHICS_PIPELINE_3D_H 1 + +#include <memory> +#include <unordered_map> + +#include "../command.hpp" +#include "core.hpp" +#include "command_pool.hpp" +#include "model.hpp" +#include "model_instance.hpp" +#include "uniform_buffer.hpp" + +namespace VK +{ + +struct GraphicsPipeline3D +{ +  VkDescriptorSetLayout descriptor_set_layout_model_instance; +  VkDescriptorSetLayout descriptor_set_layout_world_view; +  VkPipelineLayout pipeline_layout; + +  // Depth image. +  VkImage depth_image; +  VkDeviceMemory depth_image_memory; +  VkImageView depth_image_view; + +  // FIXME: if this vector get resized, it will cause a segmentation fault! +  std::vector<UniformBuffer> ub_view_projection; +  std::vector<UniformBuffer> ub_directional_light; + +  VkDescriptorPool descriptor_pool; +  std::vector<VkDescriptorSet> world_view_descriptor_sets; + +  VkRenderPass render_pass; +  std::vector<VkFramebuffer> swapchain_framebuffers; +  VkPipeline graphic_pipeline; + +  std::shared_ptr<glm::vec3> camera_position; +  std::shared_ptr<glm::vec3> camera_rotation; +  std::vector<std::unordered_map< +    std::shared_ptr<Model>, std::vector<ModelInstance>>> +  models_to_draw; + +  GraphicsPipeline3D(); +  ~GraphicsPipeline3D(); + +  void +  draw(const VkCommandBuffer draw_command_buffer, const size_t current_frame, +       const size_t next_frame, const uint32_t image_index); +}; + +} + +#endif /* CANDY_GEAR_VK_GRAPHICS_PIPELINE_3D_H */ | 
