diff options
author | rtk0c <[email protected]> | 2022-05-30 17:03:20 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-05-30 17:03:20 -0700 |
commit | e66286ebe30afc9acc4531fc2bea29b7fb924f93 (patch) | |
tree | fa6b76554c3eb88bc8f088fbab68e20c40118ca7 /source/Renderer.hpp | |
parent | 366ef5a5450c6e0e680c924c3454943a9ae9814d (diff) |
Changeset: 56 Buildsystem cleanup: change to layered structure for different targets
Diffstat (limited to 'source/Renderer.hpp')
-rw-r--r-- | source/Renderer.hpp | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/source/Renderer.hpp b/source/Renderer.hpp deleted file mode 100644 index 98a9f28..0000000 --- a/source/Renderer.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include "Camera.hpp" -#include "Material.hpp" -#include "RcPtr.hpp" -#include "VertexIndex.hpp" - -#include <glad/glad.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 { -private: - RendererFrameInfo mFrame; - bool mInsideFrame = false; - -public: - 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(); -}; |