Hymn to Beauty
C++ 3D Engine
SpriteRenderProgram.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4#include "RenderProgram.hpp"
5
6namespace Video {
7class LowLevelRenderer;
8class Texture2D;
9class Shader;
10class ShaderProgram;
11class GraphicsPipeline;
12class Buffer;
13class CommandBuffer;
14class Texture;
15class Sampler;
16class GeometryBinding;
17class VertexDescription;
18
21 public:
23
26 explicit SpriteRenderProgram(LowLevelRenderer* lowLevelRenderer);
27
30
32
36 void PreRender(CommandBuffer& commandBuffer, const glm::mat4& viewProjectionMatrix);
37
39
47 void Render(CommandBuffer& commandBuffer, Video::Texture2D* texture, const glm::vec2& size, const glm::vec2& pivot, const glm::mat4& modelMatrix, const glm::vec4& tint) const;
48
49 private:
50 SpriteRenderProgram(const SpriteRenderProgram& other) = delete;
51
52 LowLevelRenderer* lowLevelRenderer;
53
54 Buffer* vertexBuffer;
55 VertexDescription* vertexDescription;
56 GeometryBinding* geometryBinding;
57
58 Shader* vertexShader;
59 Shader* fragmentShader;
60 ShaderProgram* shaderProgram;
61 GraphicsPipeline* graphicsPipeline;
62
63 const Sampler* sampler;
64
65 struct MatricesValues {
66 glm::mat4 viewProjectionMatrix;
67 };
68
69 struct FragmentUniforms {
70 float gamma;
71 };
72};
73} // namespace Video
A buffer containing GPU accessible data.
Definition: Buffer.hpp:8
A buffer into which rendering commands are recorded.
Definition: CommandBuffer.hpp:24
Binds together a vertex description with buffers.
Definition: GeometryBinding.hpp:8
A graphics pipeline.
Definition: GraphicsPipeline.hpp:11
Low level renderer abstracting the underlaying graphics API (OpenGL or Vulkan).
Definition: LowLevelRenderer.hpp:27
Super class render program.
Definition: RenderProgram.hpp:14
float gamma
Definition: RenderProgram.hpp:35
Determines how a texture should be sampled.
Definition: Sampler.hpp:6
Compiles and handles a shader. Shaders should be linked together into a ShaderProgram.
Definition: Shader.hpp:8
A shader program.
Definition: ShaderProgram.hpp:11
Render program to render a sprite.
Definition: SpriteRenderProgram.hpp:20
void PreRender(CommandBuffer &commandBuffer, const glm::mat4 &viewProjectionMatrix)
Bind render program.
Definition: SpriteRenderProgram.cpp:73
~SpriteRenderProgram()
Destructor.
Definition: SpriteRenderProgram.cpp:60
SpriteRenderProgram(LowLevelRenderer *lowLevelRenderer)
Create new sprite render program.
Definition: SpriteRenderProgram.cpp:20
void Render(CommandBuffer &commandBuffer, Video::Texture2D *texture, const glm::vec2 &size, const glm::vec2 &pivot, const glm::mat4 &modelMatrix, const glm::vec4 &tint) const
Render sprite.
Definition: SpriteRenderProgram.cpp:92
A two-dimensional texture.
Definition: Texture2D.hpp:10
Describes how a vertex buffer is accessed by a shader.
Definition: VertexDescription.hpp:8
Definition: Editor.hpp:18