Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_minimalappbase.hpp
Go to the documentation of this file.
1#pragma once
2#include "../core/foray_context.hpp"
3#include "../foray_logger.hpp"
4#include "../osi/foray_osmanager.hpp"
7
8namespace foray::base {
11 {
12 public:
13 MinimalAppBase(bool printStateChanges = true);
14 virtual ~MinimalAppBase() = default;
15
17 int32_t Run();
18
20 FORAY_GETTER_MR(OsManager)
21 FORAY_GETTER_MR(Instance)
22
23 protected:
25 virtual void Init();
27 virtual void PollEvents();
29 virtual void Destroy();
30
32 inline virtual void ApiBeforeInstanceCreate(vkb::InstanceBuilder& instanceBuilder) {}
34 inline virtual bool ApiCanRenderNextFrame() { return true; }
36 inline virtual void ApiRender(RenderLoop::RenderInfo& renderInfo) {}
38 inline virtual void ApiOnEvent(const osi::Event* event) {}
40 inline virtual void ApiDestroy() {}
41
46 };
47} // namespace foray::base
Application base providing bare minimum of functionality (app lifetime, event handling,...
Definition foray_minimalappbase.hpp:11
int32_t Run()
Runs through the entire lifetime of the app.
MinimalAppBase(bool printStateChanges=true)
virtual void ApiDestroy()
Override this method to cleanup your application.
Definition foray_minimalappbase.hpp:40
virtual void ApiOnEvent(const osi::Event *event)
Override this method to react to events.
Definition foray_minimalappbase.hpp:38
VulkanInstance mInstance
Definition foray_minimalappbase.hpp:44
virtual void ApiBeforeInstanceCreate(vkb::InstanceBuilder &instanceBuilder)
Override this method to alter vulkan instance creation parameters via the instance builder.
Definition foray_minimalappbase.hpp:32
virtual bool ApiCanRenderNextFrame()
Override this method to init your application.
Definition foray_minimalappbase.hpp:34
osi::OsManager mOsManager
Definition foray_minimalappbase.hpp:43
core::Context mContext
Definition foray_minimalappbase.hpp:45
virtual void Destroy()
Destroys the vulkan instance.
virtual void ApiRender(RenderLoop::RenderInfo &renderInfo)
Override this method to render your application.
Definition foray_minimalappbase.hpp:36
RenderLoop mRenderLoop
Definition foray_minimalappbase.hpp:42
virtual ~MinimalAppBase()=default
virtual void Init()
Inits the applications basic vulkan objects.
virtual void PollEvents()
Polls and distributes events from the SDL subsystem.
Manages a single threaded, automatically balancing application lifetime.
Definition foray_renderloop.hpp:47
Wraps creation and lifetime of a vulkan instance. Includes default debug callback logging setup.
Definition foray_vulkaninstance.hpp:9
Base class for operating system events.
Definition foray_event.hpp:13
Class of which a single instance needs to be present for interaction with the operating system via SD...
Definition foray_osmanager.hpp:10
#define FORAY_GETTER_MR(member)
Return mutable reference.
Definition foray_basics.hpp:54
Definition foray_base_declares.hpp:3
Definition foray_renderloop.hpp:50
Non owning context object.
Definition foray_context.hpp:16