From 8eb134908b409705ea539d1f57544ddd9b2a3b46 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 29 Sep 2020 19:17:20 +0300 Subject: [PATCH] Introduce gfx::drawable interface --- libs/gfx/include/psemek/gfx/drawable.hpp | 13 +++++++++++++ libs/gfx/include/psemek/gfx/mesh.hpp | 10 +++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 libs/gfx/include/psemek/gfx/drawable.hpp diff --git a/libs/gfx/include/psemek/gfx/drawable.hpp b/libs/gfx/include/psemek/gfx/drawable.hpp new file mode 100644 index 00000000..da6dd284 --- /dev/null +++ b/libs/gfx/include/psemek/gfx/drawable.hpp @@ -0,0 +1,13 @@ +#pragma once + +namespace psemek::gfx +{ + + struct drawable + { + virtual void draw() const = 0; + + virtual ~drawable() {} + }; + +} diff --git a/libs/gfx/include/psemek/gfx/mesh.hpp b/libs/gfx/include/psemek/gfx/mesh.hpp index 8cd44622..1de5052d 100644 --- a/libs/gfx/include/psemek/gfx/mesh.hpp +++ b/libs/gfx/include/psemek/gfx/mesh.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -386,6 +387,7 @@ namespace psemek::gfx } struct mesh + : drawable { static mesh null(); @@ -471,7 +473,7 @@ namespace psemek::gfx load(simplices.data(), simplices.size(), usage); } - void draw() const + void draw() const override { if (count_ == 0) return; @@ -503,6 +505,7 @@ namespace psemek::gfx }; struct indexed_mesh + : drawable { static indexed_mesh null(); @@ -593,7 +596,7 @@ namespace psemek::gfx load(simplices.data(), simplices.size(), indices.data(), indices.size(), usage); } - void draw() const + void draw() const override { if (count_ == 0) return; @@ -627,6 +630,7 @@ namespace psemek::gfx }; struct instanced_mesh + : drawable { static instanced_mesh null(); @@ -732,7 +736,7 @@ namespace psemek::gfx load_instance(instances.data(), instances.size(), usage); } - void draw() const + void draw() const override { if (count_ == 0) return; if (instance_count_ == 0) return;