light/Engine/src/Engine/Graphics/RendererPrograms/TextureRendererProgram.h
Light aab0c7b958 CameraComponent, SceneCamera
- Added CameraComponent
- Added SceneCamera
- Renamed the previous Camera to OrthographicCamera
- Added Camera
- Renderer now takes a Camera* for projection and mat4& for view
- Scene::OnRender now takes in an optional Framebuffer to render to
- Minor tidying
2021-07-30 14:40:34 +04:30

58 lines
No EOL
1.1 KiB
C++

#pragma once
#include "RendererProgram.h"
#include "Base/Base.h"
#include <glm/glm.hpp>
namespace Light {
class Shader;
class VertexBuffer;
class IndexBuffer;
class VertexLayout;
class OrthographicCamera;
class SharedContext;
class TextureRendererProgram : RendererProgram
{
public:
struct TextureVertexData
{
glm::vec4 position;
glm::vec2 texcoord;
};
private:
Ref<Shader> m_Shader;
Ref<VertexBuffer> m_VertexBuffer;
Ref<IndexBuffer> m_IndexBuffer;
Ref<VertexLayout> m_VertexLayout;
TextureVertexData* m_MapCurrent = nullptr;
TextureVertexData* m_MapEnd = nullptr;
unsigned int m_QuadCount;
unsigned int m_MaxVertices;
public:
TextureRendererProgram(unsigned int maxVertices, Ref<SharedContext> sharedContext);
bool Advance();
void Map() override;
void UnMap() override;
void Bind() override;
inline TextureVertexData* GetMapCurrent() { return m_MapCurrent; }
inline unsigned int GetQuadCount() const { return m_QuadCount; }
inline constexpr unsigned int GetVertexSize() const { return sizeof(TextureVertexData); }
};
}