aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/Renderer.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-06-09 23:20:33 -0700
committerrtk0c <[email protected]>2022-06-09 23:20:33 -0700
commitab81521707d6ffa3f5d01ad315c0070b54bf468a (patch)
treee9d19a27a9266962b87ae73576bfa5232ed705b6 /source/30-game/Renderer.hpp
parent3acd929a28c268a52f7799ea3db1ad4a01790fec (diff)
parente3e848ac4da1c2ae59d93e62da8ef6f87b3452cd (diff)
Changeset: 68
Diffstat (limited to 'source/30-game/Renderer.hpp')
-rw-r--r--source/30-game/Renderer.hpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/source/30-game/Renderer.hpp b/source/30-game/Renderer.hpp
index 98a9f28..856dc31 100644
--- a/source/30-game/Renderer.hpp
+++ b/source/30-game/Renderer.hpp
@@ -2,10 +2,12 @@
#include "Camera.hpp"
#include "Material.hpp"
-#include "RcPtr.hpp"
#include "VertexIndex.hpp"
+#include <RcPtr.hpp>
+
#include <glad/glad.h>
+#include <rapidjson/fwd.h>
#include <cstddef>
#include <glm/glm.hpp>
@@ -56,13 +58,35 @@ struct RendererFrameInfo {
};
class Renderer {
+public:
+ // NOTE: see Renderer constructor for default values
+ enum RenderOption {
+ /// Render everything directly using objects' provided material and vertex/index data.
+ RO_Shading,
+ /// Render everything as wireframes using provided position data.
+ RO_Wireframe,
+ RO_COUNT,
+ };
+
+public:
+ RcPtr<Material> binding_WireframeMaterial;
+
private:
RendererFrameInfo mFrame;
bool mInsideFrame = false;
+ bool mRenderOptions[RO_COUNT] = {};
public:
+ Renderer();
+
+ void LoadBindings(const rapidjson::Value& bindings);
+ void SaveBindings(rapidjson::Value& into, rapidjson::Document& root) const;
+
void BeginFrame(Camera& camera, float currentTime, float deltaTime);
const RendererFrameInfo& GetLastFrameInfo() const { return mFrame; }
void Draw(const RenderObject* objects, const GameObject* gameObject, size_t count);
void EndFrame();
+
+ bool GetRenderOption(RenderOption option) const;
+ void SetRenderOption(RenderOption option, bool flag);
};