diff options
author | rtk0c <[email protected]> | 2022-06-09 23:20:33 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-06-09 23:20:33 -0700 |
commit | ab81521707d6ffa3f5d01ad315c0070b54bf468a (patch) | |
tree | e9d19a27a9266962b87ae73576bfa5232ed705b6 /source/30-game/Renderer.hpp | |
parent | 3acd929a28c268a52f7799ea3db1ad4a01790fec (diff) | |
parent | e3e848ac4da1c2ae59d93e62da8ef6f87b3452cd (diff) |
Changeset: 68
Diffstat (limited to 'source/30-game/Renderer.hpp')
-rw-r--r-- | source/30-game/Renderer.hpp | 26 |
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); }; |