Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_vulkanwindowswapchain.hpp
Go to the documentation of this file.
1#pragma once
2#include "../core/foray_swapchainimageinfo.hpp"
3#include "../foray_vkb.hpp"
4#include "../osi/foray_osi_declares.hpp"
5#include "../osi/foray_window.hpp"
7#include <functional>
8
9namespace foray::base {
12 {
13 public:
15 using BeforeWindowCreateFunctionPointer = std::function<void(osi::Window&)>;
17 using BeforeSwapchainBuildFunctionPointer = std::function<void(vkb::SwapchainBuilder&)>;
19 using OnResizedFunctionPointer = std::function<void(VkExtent2D)>;
21 using MakeSwapchainImageNameFunctionPointer = std::function<std::string(uint32_t)>;
22
25 BeforeWindowCreateFunctionPointer beforeWindowCreateFunc,
26 BeforeSwapchainBuildFunctionPointer beforeSwapchainBuildFunc,
27 OnResizedFunctionPointer onResizedFunc,
28 MakeSwapchainImageNameFunctionPointer makeSwapchainImageNameFunc)
29 : mBeforeWindowCreateFunc{beforeWindowCreateFunc}
30 , mBeforeSwapchainBuildFunc{beforeSwapchainBuildFunc}
31 , mOnResizedFunc{onResizedFunc}
32 , mMakeSwapchainImageNameFunc{makeSwapchainImageNameFunc}
33 , mContext(context)
34 {
35 }
36
37 FORAY_PROPERTY_R(Window)
38 FORAY_PROPERTY_V(Surface)
39 FORAY_PROPERTY_R(Swapchain)
40 FORAY_PROPERTY_R(SwapchainImages)
41 FORAY_PROPERTY_V(Context)
42
43
47 inline bool Exists() const { return !!mSwapchain.swapchain; }
48 void Destroy();
49
51 void HandleEvent(const osi::Event* event);
54
55 protected:
58
63
65
67
69 VkSurfaceKHR mSurface = nullptr;
70 vkb::Swapchain mSwapchain;
71 std::vector<core::SwapchainImageInfo> mSwapchainImages;
72 };
73} // namespace foray::base
Combines Window, Surface and Swapchain into one managing object.
Definition foray_vulkanwindowswapchain.hpp:12
bool Exists() const
Definition foray_vulkanwindowswapchain.hpp:47
core::Context * mContext
Definition foray_vulkanwindowswapchain.hpp:66
osi::Window mWindow
Definition foray_vulkanwindowswapchain.hpp:68
bool mNameSwapchainImages
Definition foray_vulkanwindowswapchain.hpp:64
std::function< void(osi::Window &)> BeforeWindowCreateFunctionPointer
Function called before window is created.
Definition foray_vulkanwindowswapchain.hpp:15
VkSurfaceKHR mSurface
Definition foray_vulkanwindowswapchain.hpp:69
std::function< void(vkb::SwapchainBuilder &)> BeforeSwapchainBuildFunctionPointer
Function called before the swapchain is created.
Definition foray_vulkanwindowswapchain.hpp:17
VulkanWindowSwapchain(core::Context *context, BeforeWindowCreateFunctionPointer beforeWindowCreateFunc, BeforeSwapchainBuildFunctionPointer beforeSwapchainBuildFunc, OnResizedFunctionPointer onResizedFunc, MakeSwapchainImageNameFunctionPointer makeSwapchainImageNameFunc)
Definition foray_vulkanwindowswapchain.hpp:24
OnResizedFunctionPointer mOnResizedFunc
Definition foray_vulkanwindowswapchain.hpp:61
void CreateWindow()
Create the Window.
std::vector< core::SwapchainImageInfo > mSwapchainImages
Definition foray_vulkanwindowswapchain.hpp:71
BeforeSwapchainBuildFunctionPointer mBeforeSwapchainBuildFunc
Definition foray_vulkanwindowswapchain.hpp:60
std::function< std::string(uint32_t)> MakeSwapchainImageNameFunctionPointer
Function called for naming swapchain images.
Definition foray_vulkanwindowswapchain.hpp:21
std::function< void(VkExtent2D)> OnResizedFunctionPointer
Function called when a resize occurs.
Definition foray_vulkanwindowswapchain.hpp:19
void HandleEvent(const osi::Event *event)
Listens for WindowSizeChanged events to preemptively resize the swapchain.
vkb::Swapchain mSwapchain
Definition foray_vulkanwindowswapchain.hpp:70
void CreateSwapchain()
Create the Swapchain.
MakeSwapchainImageNameFunctionPointer mMakeSwapchainImageNameFunc
Definition foray_vulkanwindowswapchain.hpp:62
void RecreateSwapchain()
Call to recreate the swapchain.
BeforeWindowCreateFunctionPointer mBeforeWindowCreateFunc
Definition foray_vulkanwindowswapchain.hpp:59
Base class for operating system events.
Definition foray_event.hpp:13
Window class. Provides access to common properties of operating system level windows.
Definition foray_window.hpp:15
#define FORAY_PROPERTY_V(member)
Getter+Setter shorthand for value types.
Definition foray_basics.hpp:81
#define FORAY_PROPERTY_R(member)
Getter+Setter shorthand for reference types.
Definition foray_basics.hpp:86
Definition foray_base_declares.hpp:3
Non owning context object.
Definition foray_context.hpp:16