Animación Vulkan 1.0
Animación de tiro libre baloncesto con motor gráfico desarrollado en clase
Cargando...
Buscando...
Nada coincide
GERenderingContext.h
Ir a la documentación de este archivo.
1#pragma once
2
3#include <vulkan/vulkan.h>
4#include <iostream>
5#include "GEGraphicsContext.h"
6#include "GEDrawingContext.h"
7#include "GEPipelineConfig.h"
8#include "GEDepthBuffer.h"
9
14
20{
21public:
22 uint32_t imageCount;
23 VkDescriptorSetLayout descriptorSetLayout;
24 VkPipelineLayout pipelineLayout;
25
26private:
27 VkFormat format;
28 VkExtent2D extent;
29 VkRenderPass renderPass;
30 VkPipeline graphicsPipeline;
31 std::vector<GEDepthBuffer*> depthBuffers;
32 std::vector<VkFramebuffer> framebuffers;
33 VkViewport viewport;
34 VkRect2D scissor;
35
36public:
44
49 void destroy(GEGraphicsContext* gc);
50
55 void startFillingCommandBuffers(std::vector<VkCommandBuffer> commandBuffers);
56
61 void endFillingCommandBuffers(std::vector<VkCommandBuffer> commandBuffers);
62
63private:
64 // ===== Métodos de creación de componentes =====
69
70 // ===== Métodos de definición del pipeline de renderizado =====
72 void createVertexShaderStageCreateInfo(GEGraphicsContext* gc, int resource, VkShaderModule* vertShaderModule, VkPipelineShaderStageCreateInfo* vertShaderStageInfo);
73 void createFragmentShaderStageCreateInfo(GEGraphicsContext* gc, int resource, VkShaderModule* fragShaderModule, VkPipelineShaderStageCreateInfo* fragShaderStageInfo);
74 void createPipelineVertexInputStateCreateInfo(GEPipelineConfig* config, VkPipelineVertexInputStateCreateInfo* vertexInputInfo);
75 void createPipelineInputAssemblyStateCreateInfo(VkPipelineInputAssemblyStateCreateInfo* inputAssembly);
76 void createPipelineViewportStateCreateInfo(VkPipelineViewportStateCreateInfo* viewportState);
77 void createPipelineRasterizationStateCreateInfo(GEPipelineConfig* config, VkPipelineRasterizationStateCreateInfo* rasterizer);
78 void createPipelineMultisampleStateCreateInfo(VkPipelineMultisampleStateCreateInfo* multisampling);
79 void createPipelineDepthStencilStateCreateInfo(GEPipelineConfig* config, VkPipelineDepthStencilStateCreateInfo* depthStencil);
80 void createPipelineColorBlendStateCreateInfo(VkPipelineColorBlendAttachmentState* colorBlendAttachment, VkPipelineColorBlendStateCreateInfo* colorBlending);
81
82 // ===== Métodos auxiliares =====
83 VkShaderModule createShaderModule(GEGraphicsContext* gc, const std::vector<char>& code);
84 std::vector<char> getFileFromResource(int resource);
85};
86
Declaración de la clase GEDepthBuffer que gestiona el recurso de profundidad.
Declaración de la clase GEDrawingContext para gestionar swapchain y present.
Declaración de la clase GEGraphicsContext que almacena el contexto gráfico de Vulkan.
Declaración de la clase GEPipelineConfig que almacena la configuración de un pipeline de renderizado.
Clase que contiene la información sobre el destino de las imágenes a generar (swapchain,...
Definition GEDrawingContext.h:18
Clase que almacena el contexto gráfico de Vulkan (instancia y dispositivo).
Definition GEGraphicsContext.h:17
Almacena la configuración de un pipeline de renderizado.
Definition GEPipelineConfig.h:15
void endFillingCommandBuffers(std::vector< VkCommandBuffer > commandBuffers)
Finaliza el llenado de los buffers de comandos.
Definition GERenderingContext.cpp:92
void startFillingCommandBuffers(std::vector< VkCommandBuffer > commandBuffers)
Prepara los buffers de comandos para añadir las operaciones de renderizado.
Definition GERenderingContext.cpp:57
VkShaderModule createShaderModule(GEGraphicsContext *gc, const std::vector< char > &code)
Crea un shader a partir de su código en SPIR-V.
Definition GERenderingContext.cpp:531
void createPipelineRasterizationStateCreateInfo(GEPipelineConfig *config, VkPipelineRasterizationStateCreateInfo *rasterizer)
Crea la información de la etapa de rasterización.
Definition GERenderingContext.cpp:453
void createPipelineVertexInputStateCreateInfo(GEPipelineConfig *config, VkPipelineVertexInputStateCreateInfo *vertexInputInfo)
Crea la descripción de los atributos de los vértices.
Definition GERenderingContext.cpp:387
VkViewport viewport
Definition GERenderingContext.h:33
void createPipelineViewportStateCreateInfo(VkPipelineViewportStateCreateInfo *viewportState)
Crea la información del viewport.
Definition GERenderingContext.cpp:438
std::vector< VkFramebuffer > framebuffers
Definition GERenderingContext.h:32
VkFormat format
Definition GERenderingContext.h:27
void createPipelineDepthStencilStateCreateInfo(GEPipelineConfig *config, VkPipelineDepthStencilStateCreateInfo *depthStencil)
Crea la información sobre los tests de profundidad y de plantilla.
Definition GERenderingContext.cpp:483
void createFramebuffers(GEGraphicsContext *gc, GEDrawingContext *dc)
Crea un Framebuffer para cada imagen del swapchain.
Definition GERenderingContext.cpp:266
void createFragmentShaderStageCreateInfo(GEGraphicsContext *gc, int resource, VkShaderModule *fragShaderModule, VkPipelineShaderStageCreateInfo *fragShaderStageInfo)
Crea la información sobre el Fragment Shader.
Definition GERenderingContext.cpp:369
void createPipelineMultisampleStateCreateInfo(VkPipelineMultisampleStateCreateInfo *multisampling)
Crea la información de la etapa de muestreo.
Definition GERenderingContext.cpp:470
std::vector< char > getFileFromResource(int resource)
Extrae el contenido de un fichero incluido como recurso de la aplicación.
Definition GERenderingContext.cpp:552
std::vector< GEDepthBuffer * > depthBuffers
Definition GERenderingContext.h:31
void createPipelineInputAssemblyStateCreateInfo(VkPipelineInputAssemblyStateCreateInfo *inputAssembly)
Crea la información para el ensamblado de primitivas.
Definition GERenderingContext.cpp:426
GERenderingContext(GEGraphicsContext *gc, GEDrawingContext *dc, GEPipelineConfig *config)
Construye el contexto de renderizado (render pass, pipeline y framebuffers).
Definition GERenderingContext.cpp:24
VkDescriptorSetLayout descriptorSetLayout
Layout de los descriptor sets.
Definition GERenderingContext.h:23
VkPipeline graphicsPipeline
Definition GERenderingContext.h:30
void destroy(GEGraphicsContext *gc)
Destruye los recursos del contexto de renderizado.
Definition GERenderingContext.cpp:40
void createDepthBuffers(GEGraphicsContext *gc)
Crea los buffers de profundidad.
Definition GERenderingContext.cpp:251
void createVertexShaderStageCreateInfo(GEGraphicsContext *gc, int resource, VkShaderModule *vertShaderModule, VkPipelineShaderStageCreateInfo *vertShaderStageInfo)
Crea la información sobre el Vertex Shader.
Definition GERenderingContext.cpp:349
VkPipelineLayout pipelineLayout
Layout del pipeline.
Definition GERenderingContext.h:24
VkExtent2D extent
Definition GERenderingContext.h:28
void createRenderPass(GEGraphicsContext *gc)
Crea los pasos de renderizado.
Definition GERenderingContext.cpp:116
void createGraphicsPipeline(GEGraphicsContext *gc, GEPipelineConfig *config)
Crea el Pipeline de renderizado.
Definition GERenderingContext.cpp:183
uint32_t imageCount
Número de imágenes en el swapchain.
Definition GERenderingContext.h:22
VkRenderPass renderPass
Definition GERenderingContext.h:29
VkRect2D scissor
Definition GERenderingContext.h:34
void createPipelineColorBlendStateCreateInfo(VkPipelineColorBlendAttachmentState *colorBlendAttachment, VkPipelineColorBlendStateCreateInfo *colorBlending)
Crea la información sobre la etapa de mezcla de colores.
Definition GERenderingContext.cpp:501
void createPipelineLayout(GEGraphicsContext *gc, GEPipelineConfig *config)
Crea el esquema de los conjuntos de descriptores.
Definition GERenderingContext.cpp:304