aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/Renderer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/30-game/Renderer.hpp')
-rw-r--r--source/30-game/Renderer.hpp92
1 files changed, 0 insertions, 92 deletions
diff --git a/source/30-game/Renderer.hpp b/source/30-game/Renderer.hpp
deleted file mode 100644
index 856dc31..0000000
--- a/source/30-game/Renderer.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#pragma once
-
-#include "Camera.hpp"
-#include "Material.hpp"
-#include "VertexIndex.hpp"
-
-#include <RcPtr.hpp>
-
-#include <glad/glad.h>
-#include <rapidjson/fwd.h>
-#include <cstddef>
-#include <glm/glm.hpp>
-
-// TODO add optional support for OpenGL separate attrib binding & only depend on vertex format
-
-class GameObject;
-
-class RenderObject {
-public:
- RcPtr<Texture> autofill_TextureAtlas;
-
-private:
- RcPtr<Material> mMaterial;
- RcPtr<GpuIndexBuffer> mIndexBuf;
- RcPtr<VertexFormat> mVertexFormat;
- BufferBindings mVertexBufBinding;
- GLuint mVao;
-
-public:
- RenderObject();
- ~RenderObject();
-
- GLuint GetGLVao() const;
- void RebuildIfNecessary();
-
- Material* GetMaterial() const { return mMaterial.Get(); }
- void SetMaterial(Material* material);
-
- GpuIndexBuffer* GetIndexBuffer() const { return mIndexBuf.Get(); }
- const VertexFormat* GetVertexFormat() const { return mVertexFormat.Get(); }
- const BufferBindings& GetVertexBufferBindings() const { return mVertexBufBinding; }
- void UpdateIndexBuffer(GpuIndexBuffer* indexBuffer);
- void UpdateVertexFormat(VertexFormat* vertexFormat);
- // Assumes the fetched BufferBinding object is modified
- void UpdateVertexBufferBindings(BufferBindings** bindingsOut);
- void SetFormat(VertexFormat* vertexFormat, Tags::IndexType indexFormat);
-
-private:
- void DeleteGLObjects();
-};
-
-struct RendererFrameInfo {
- Camera* camera;
- glm::mat4 matrixView;
- glm::mat4 matrixProj;
- float time;
- float deltaTime;
-};
-
-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);
-};