summaryrefslogtreecommitdiff
path: root/deimos/render/backend.h
blob: bb94cb9c7217806bbe2a5abc2f5ffe12fc34ee92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once 

#include <deimos/core/base.h>
#include <deimos/core/status.h>

namespace deimos
{

struct RenderSwapchain{};

class IRenderBackend
{
public:
    IRenderBackend() = default;
    deimos_NO_COPY_MOVE(IRenderBackend);
    virtual ~IRenderBackend() = default;

    virtual void BeginFrame() = 0;
    virtual void EndFrame() = 0;

    virtual StatusOr<gsl::owner<RenderSwapchain*>> CreateSwapchain() = 0;
    virtual void DestroySwapchain(gsl::owner<RenderSwapchain*>) = 0;
};

} // namespace deimos