aboutsummaryrefslogtreecommitdiff
path: root/source/Renderer.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-05-23 22:36:46 -0700
committerrtk0c <[email protected]>2022-05-23 22:36:46 -0700
commite3e848ac4da1c2ae59d93e62da8ef6f87b3452cd (patch)
treef70d86d4ae80f1fedc0afb1ba3b923e3651f0475 /source/Renderer.hpp
parent123f741e3f5374b93ac39887b62bfa0d66762ae2 (diff)
Changeset: 37 Branch comment: [] Add infrastructure for rendering wireframe (rendering broken) including saving and loading config files
Diffstat (limited to 'source/Renderer.hpp')
-rw-r--r--source/Renderer.hpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/source/Renderer.hpp b/source/Renderer.hpp
index 98a9f28..7d96ce2 100644
--- a/source/Renderer.hpp
+++ b/source/Renderer.hpp
@@ -6,6 +6,7 @@
#include "VertexIndex.hpp"
#include <glad/glad.h>
+#include <rapidjson/fwd.h>
#include <cstddef>
#include <glm/glm.hpp>
@@ -56,13 +57,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);
};