32 lines
1.1 KiB
C++
32 lines
1.1 KiB
C++
#pragma once
|
|
|
|
namespace Juliet
|
|
{
|
|
struct RenderPass;
|
|
struct CommandList;
|
|
struct Texture;
|
|
struct ColorTargetInfo;
|
|
struct DepthStencilTargetInfo;
|
|
|
|
class IApplication
|
|
{
|
|
public:
|
|
virtual ~IApplication() = default;
|
|
virtual void Init() = 0;
|
|
virtual void Shutdown() = 0;
|
|
virtual void Update() = 0;
|
|
virtual bool IsRunning() = 0;
|
|
|
|
// Accessors for Engine Systems
|
|
virtual struct Window* GetPlatformWindow() = 0;
|
|
virtual struct GraphicsDevice* GetGraphicsDevice() = 0;
|
|
|
|
// Render Lifecycle (Engine-Managed Render Loop)
|
|
virtual void OnPreRender(CommandList* cmd) = 0;
|
|
virtual void OnRender(RenderPass* pass, CommandList* cmd) = 0;
|
|
virtual ColorTargetInfo GetColorTargetInfo(Texture* swapchainTexture) = 0;
|
|
virtual DepthStencilTargetInfo* GetDepthTargetInfo() = 0;
|
|
virtual struct Camera GetDebugCamera() = 0;
|
|
};
|
|
} // namespace Juliet
|