77 lines
1.3 KiB
C++
77 lines
1.3 KiB
C++
export module renderer.frontend;
|
|
|
|
import ecs.entity;
|
|
import math.vec2;
|
|
import renderer.api;
|
|
import memory.scope;
|
|
|
|
export namespace lt::renderer {
|
|
|
|
class IDevice
|
|
{
|
|
public:
|
|
IDevice() = default;
|
|
|
|
virtual ~IDevice() = default;
|
|
|
|
IDevice(IDevice &&) = default;
|
|
|
|
IDevice(const IDevice &) = delete;
|
|
|
|
auto operator=(IDevice &&) -> IDevice & = default;
|
|
|
|
auto operator=(const IDevice &) -> IDevice & = delete;
|
|
};
|
|
|
|
class IGpu
|
|
{
|
|
public:
|
|
IGpu() = default;
|
|
|
|
virtual ~IGpu() = default;
|
|
|
|
IGpu(IGpu &&) = default;
|
|
|
|
IGpu(const IGpu &) = delete;
|
|
|
|
auto operator=(IGpu &&) -> IGpu & = default;
|
|
|
|
auto operator=(const IGpu &) -> IGpu & = delete;
|
|
};
|
|
|
|
class IInstance
|
|
{
|
|
public:
|
|
// [[nodiscard]] static auto get(Api target_api) -> IInstance *;
|
|
IInstance() = default;
|
|
|
|
virtual ~IInstance() = default;
|
|
|
|
IInstance(IInstance &&) = default;
|
|
|
|
IInstance(const IInstance &) = delete;
|
|
|
|
auto operator=(IInstance &&) -> IInstance & = default;
|
|
|
|
auto operator=(const IInstance &) -> IInstance & = delete;
|
|
};
|
|
|
|
class ISurface
|
|
{
|
|
public:
|
|
ISurface() = default;
|
|
|
|
virtual ~ISurface() = default;
|
|
|
|
ISurface(ISurface &&) = default;
|
|
|
|
ISurface(const ISurface &) = delete;
|
|
|
|
auto operator=(ISurface &&) -> ISurface & = default;
|
|
|
|
auto operator=(const ISurface &) -> ISurface & = delete;
|
|
|
|
[[nodiscard]] virtual auto get_framebuffer_size() const -> math::uvec2 = 0;
|
|
};
|
|
|
|
} // namespace lt::renderer
|