58 [[nodiscard]] uint32_t prepareNextFrame(VkCommandBufferInheritanceInfo
const* inheritanceInfo,
59 uint64_t timeout_ns)
override;
60 void beginRenderPass(uint32_t imageIndex)
override;
61 void endRenderPass()
override;
62 void display(uint32_t imageIndex)
override;
64 [[nodiscard]] Vector2u getSize()
const override;
66 void setPresentMode(VkPresentModeKHR presentMode);
67 [[nodiscard]] VkPresentModeKHR getPresentMode()
const;
69 void setTargetFrameRate(
unsigned int frameRate);
70 [[nodiscard]]
unsigned int getTargetFrameRate()
const;
72 [[nodiscard]] VkExtent2D getExtent2D()
const override;
74 [[nodiscard]] VkRenderPass getRenderPass()
const override;
77 [[nodiscard]] VkCommandBufferInheritanceInfo getInheritanceInfo(uint32_t imageIndex)
const;
79 [[nodiscard]] uint32_t getCurrentFrame()
const;
86 void recreateSwapChain();
88 void createRenderPass();
89 void createFramebuffers();
90 void createSyncObjects();
96 VkRenderPass g_renderPass = VK_NULL_HANDLE;
98 std::vector<VkFramebuffer> g_swapChainFramebuffers;
100 mutable std::array<fge::vulkan::CommandBuffer, FGE_MAX_FRAMES_IN_FLIGHT> g_commandBuffers;
102 std::array<VkSemaphore, FGE_MAX_FRAMES_IN_FLIGHT> g_imageAvailableSemaphores;
103 std::array<VkSemaphore, FGE_MAX_FRAMES_IN_FLIGHT> g_renderFinishedSemaphores;
104 std::array<VkFence, FGE_MAX_FRAMES_IN_FLIGHT> g_inFlightFences;
106 uint32_t g_currentFrame = 0;
108 VkPresentModeKHR g_presentMode = VK_PRESENT_MODE_FIFO_KHR;
109 std::chrono::steady_clock::time_point g_lastFrameTime;
110 unsigned int g_targetFrameRate = FGE_RENDER_FPS_NOT_LIMITED;
112 bool g_framebufferResized =
false;
113 bool g_isCreated =
false;
Vulkan context.
Definition C_context.hpp:70