Core renderer for the application
More...
#include <Renderer.h>
Inherits Fling::Singleton< Renderer >.
|
static Renderer & | Get () |
|
| Singleton ()=default |
| Every singleton must have a default constructor so that explicit creation and destruction of them is maintained. More...
|
|
Core renderer for the application
◆ ChooseSwapChainPresentMode()
VkPresentModeKHR Fling::Renderer::ChooseSwapChainPresentMode |
( |
const std::vector< VkPresentModeKHR > & |
t_AvialableFormats | ) |
|
|
private |
Choose a present mode for the swap chain based on the given formats.
Prefer VK_PRESENT_MODE_MAILBOX_KHR If none are available, than return VK_PRESENT_MODE_FIFO_KHR or VK_PRESENT_MODE_IMMEDIATE_KHR based on support
- Parameters
-
Vector | of available formats |
- Returns
- Preferred present mode from the available formats
◆ ChooseSwapChainSurfaceFormat()
VkSurfaceFormatKHR Fling::Renderer::ChooseSwapChainSurfaceFormat |
( |
const std::vector< VkSurfaceFormatKHR > & |
t_AvailableFormats | ) |
|
|
private |
Choose a swap chain format based on the available formats.
Prefer to format that has VK_FORMAT_B8G8R8A8_UNORM and VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, otherwise get the first available.
- Parameters
-
Available | swap chain formats |
- Returns
- Best swap chain surface formate based on the available ones
◆ ChooseSwapExtent()
VkExtent2D Fling::Renderer::ChooseSwapExtent |
( |
| ) |
|
|
private |
Determine the best match extents based on our window width and height.
- Returns
- Extents with the best matching resolution
◆ CleanupFrameResources()
void Fling::Renderer::CleanupFrameResources |
( |
| ) |
|
|
private |
◆ CreateCommandBuffers()
void Fling::Renderer::CreateCommandBuffers |
( |
| ) |
|
|
private |
◆ CreateCommandPool()
void Fling::Renderer::CreateCommandPool |
( |
| ) |
|
|
private |
Create the command pool to be sent every frame.
◆ CreateDescriptorLayout()
void Fling::Renderer::CreateDescriptorLayout |
( |
| ) |
|
|
private |
◆ CreateDescriptorPool()
void Fling::Renderer::CreateDescriptorPool |
( |
| ) |
|
|
private |
◆ CreateDescriptorSets()
void Fling::Renderer::CreateDescriptorSets |
( |
| ) |
|
|
private |
◆ CreateFrameBuffers()
void Fling::Renderer::CreateFrameBuffers |
( |
| ) |
|
|
private |
Create the frame buffers for use by the swap chain.
◆ CreateGameWindow()
void Fling::Renderer::CreateGameWindow |
( |
const UINT32 |
t_width, |
|
|
const UINT32 |
t_height |
|
) |
| |
Init GLFW and create the game window
- Parameters
-
t_width | Width of the window |
t_height | Height of the window |
◆ CreateGraphicsPipeline()
void Fling::Renderer::CreateGraphicsPipeline |
( |
| ) |
|
|
private |
Create the graphics pipeline (IA, VS, FS, etc)
◆ CreateRenderPass()
void Fling::Renderer::CreateRenderPass |
( |
| ) |
|
|
private |
Create the frame buffer that will be used by the graphics pipeline.
◆ CreateShaderModule()
VkShaderModule Fling::Renderer::CreateShaderModule |
( |
std::shared_ptr< File > |
t_ShaderCode | ) |
|
|
private |
Create a shader module based on the given shader code.
- Parameters
-
- Returns
- Shader module from the given code
◆ CreateSyncObjects()
void Fling::Renderer::CreateSyncObjects |
( |
| ) |
|
|
private |
Create semaphores and fence objects.
◆ CreateUniformBuffers()
void Fling::Renderer::CreateUniformBuffers |
( |
| ) |
|
|
private |
◆ DrawFrame()
void Fling::Renderer::DrawFrame |
( |
| ) |
|
◆ GetCommandPool()
const VkCommandPool& Fling::Renderer::GetCommandPool |
( |
| ) |
const |
|
inline |
◆ GetCurrentWindow()
FlingWindow* Fling::Renderer::GetCurrentWindow |
( |
| ) |
const |
|
inline |
◆ GetGraphicsQueue()
const VkQueue& Fling::Renderer::GetGraphicsQueue |
( |
| ) |
const |
|
inline |
◆ GetLogicalDevice()
◆ GetLogicalVkDevice()
const VkDevice& Fling::Renderer::GetLogicalVkDevice |
( |
| ) |
const |
|
inline |
Get the logical graphics Device object.
- Returns
- const ref to VkDevice
◆ GetPhysicalDevice()
◆ GetPhysicalVkDevice()
const VkPhysicalDevice& Fling::Renderer::GetPhysicalVkDevice |
( |
| ) |
const |
|
inline |
Get the Physical Device object used by this renderer.
- Returns
- const VkPhysicalDevice&
◆ GetSwapChain()
Swapchain* Fling::Renderer::GetSwapChain |
( |
| ) |
const |
|
inline |
◆ GetVkSurface()
const VkSurfaceKHR& Fling::Renderer::GetVkSurface |
( |
| ) |
const |
|
inline |
◆ Init()
void Fling::Renderer::Init |
( |
| ) |
|
|
overridevirtual |
◆ InitGraphics()
void Fling::Renderer::InitGraphics |
( |
| ) |
|
|
private |
Init the current graphics API
◆ PrepShutdown()
void Fling::Renderer::PrepShutdown |
( |
| ) |
|
Prepare for shutdown of the rendering pipeline, close any open semaphores.
◆ QuerySwapChainSupport()
Check the swap chain support of a given device.
- Parameters
-
The | device to check support on |
- Returns
- Details of the the swap chain support on this device
◆ RecreateFrameResources()
void Fling::Renderer::RecreateFrameResources |
( |
| ) |
|
|
private |
Re-create the image views, render passes, and command buffers.
◆ SetFrameBufferHasBeenResized()
void Fling::Renderer::SetFrameBufferHasBeenResized |
( |
bool |
t_Setting | ) |
|
|
inline |
◆ Shutdown()
void Fling::Renderer::Shutdown |
( |
| ) |
|
|
overridevirtual |
◆ Tick()
void Fling::Renderer::Tick |
( |
| ) |
|
Happens before draw frame.
Update the window
◆ UpdateUniformBuffer()
void Fling::Renderer::UpdateUniformBuffer |
( |
UINT32 |
t_CurrentImage | ) |
|
|
private |
Update the uniform buffer data.
Called during DrawFrame
- Parameters
-
t_CurrentImage | The current image index that we are using |
◆ CurrentFrameIndex
size_t Fling::Renderer::CurrentFrameIndex = 0 |
|
private |
◆ m_camera
◆ m_CommandBuffers
std::vector<VkCommandBuffer> Fling::Renderer::m_CommandBuffers |
|
private |
◆ m_CommandPool
VkCommandPool Fling::Renderer::m_CommandPool |
|
private |
◆ m_CurrentWindow
FlingWindow* Fling::Renderer::m_CurrentWindow = nullptr |
|
private |
◆ m_DepthBuffer
◆ m_DescriptorPool
VkDescriptorPool Fling::Renderer::m_DescriptorPool |
|
private |
◆ m_DescriptorSetLayout
VkDescriptorSetLayout Fling::Renderer::m_DescriptorSetLayout |
|
private |
Pipeline layout stores uniforms (global shader vars)
◆ m_DescriptorSets
std::vector<VkDescriptorSet> Fling::Renderer::m_DescriptorSets |
|
private |
◆ m_FrameBufferResized
bool Fling::Renderer::m_FrameBufferResized = false |
|
private |
Used to determine if the frame buffer has been resized or not.
◆ m_GraphicsPipeline
VkPipeline Fling::Renderer::m_GraphicsPipeline |
|
private |
◆ m_ImageAvailableSemaphores
std::vector<VkSemaphore> Fling::Renderer::m_ImageAvailableSemaphores |
|
private |
◆ m_InFlightFences
std::vector<VkFence> Fling::Renderer::m_InFlightFences |
|
private |
◆ m_Instance
Instance* Fling::Renderer::m_Instance = nullptr |
|
private |
◆ m_LogicalDevice
◆ m_PhysicalDevice
◆ m_PipelineLayout
VkPipelineLayout Fling::Renderer::m_PipelineLayout |
|
private |
◆ m_RenderFinishedSemaphores
std::vector<VkSemaphore> Fling::Renderer::m_RenderFinishedSemaphores |
|
private |
◆ m_RenderPass
VkRenderPass Fling::Renderer::m_RenderPass |
|
private |
◆ m_Surface
VkSurfaceKHR Fling::Renderer::m_Surface = VK_NULL_HANDLE |
|
private |
Handle to the surface extension used to interact with the windows system.
◆ m_SwapChain
Swapchain* Fling::Renderer::m_SwapChain = nullptr |
|
private |
◆ m_SwapChainFramebuffers
std::vector<VkFramebuffer> Fling::Renderer::m_SwapChainFramebuffers |
|
private |
◆ m_TestImage
std::shared_ptr<class Image> Fling::Renderer::m_TestImage |
|
private |
◆ m_TestModel
std::shared_ptr<Model> Fling::Renderer::m_TestModel |
|
private |
◆ m_UniformBuffers
std::vector<Buffer*> Fling::Renderer::m_UniformBuffers |
|
private |
◆ MAX_FRAMES_IN_FLIGHT
const int Fling::Renderer::MAX_FRAMES_IN_FLIGHT = 2 |
|
staticprivate |
The documentation for this class was generated from the following files: