Add 2D Batch renderer

This commit is contained in:
Thraix
2023-03-08 12:05:57 +01:00
parent c975ed2674
commit 796de92a56
21 changed files with 439 additions and 48 deletions
@@ -56,6 +56,7 @@ namespace Copium
InitializeDescriptorSets();
InitializeMesh();
InitializeCommandBuffer();
InitializeRenderer();
}
Application::~Application()
@@ -99,6 +100,7 @@ namespace Copium
void Application::InitializeTextureSampler()
{
texture2D = std::make_unique<Texture2D>(*vulkan, "res/textures/texture.png");
texture2D2 = std::make_unique<Texture2D>(*vulkan, "res/textures/texture2.png");
}
void Application::InitializeUniformBuffer()
@@ -145,6 +147,11 @@ namespace Copium
commandBuffer = std::make_unique<CommandBuffer>(*vulkan, CommandBuffer::Type::Dynamic);
}
void Application::InitializeRenderer()
{
renderer = std::make_unique<Renderer>(*vulkan, framebuffer->GetRenderPass(), *descriptorPool);
}
void Application::RecordCommandBuffer()
{
commandBuffer->Begin();
@@ -160,6 +167,18 @@ namespace Copium
mesh->Bind(*commandBuffer);
mesh->Render(*commandBuffer);
renderer->Begin(*commandBuffer);
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
renderer->Quad(glm::vec2(-1 + x * 0.2, -1 + y * 0.2), glm::vec2(-1 + (x + 0.5) * 0.2, -1 + (y + 0.5) * 0.2), glm::vec3{x * 0.1, y * 0.1, 1.0});
}
}
renderer->Quad(glm::vec2(-0.5, -0.5), glm::vec2{-0.1, 0.5}, *texture2D);
renderer->Quad(glm::vec2(0.1, -0.5), glm::vec2{0.5, 0.5}, *texture2D2);
renderer->End();
framebuffer->Unbind(*commandBuffer);
vulkan->GetSwapChain().BeginFrameBuffer(*commandBuffer);
@@ -12,6 +12,7 @@
#include "copium/pipeline/DescriptorSet.h"
#include "copium/pipeline/Pipeline.h"
#include "copium/sampler/Texture2D.h"
#include "copium/renderer/Renderer.h"
namespace Copium
{
@@ -23,6 +24,7 @@ namespace Copium
std::unique_ptr<Instance> instance;
std::unique_ptr<Framebuffer> framebuffer;
std::unique_ptr<Texture2D> texture2D;
std::unique_ptr<Texture2D> texture2D2;
std::unique_ptr<UniformBuffer> shaderUniformBuffer;
std::unique_ptr<DescriptorPool> descriptorPool;
std::unique_ptr<DescriptorSet> descriptorSet;
@@ -32,6 +34,7 @@ namespace Copium
std::unique_ptr<Mesh> mesh;
std::unique_ptr<Mesh> meshPassthrough;
std::unique_ptr<CommandBuffer> commandBuffer;
std::unique_ptr<Renderer> renderer;
public:
Application();
@@ -47,6 +50,7 @@ namespace Copium
void InitializeGraphicsPipeline();
void InitializeMesh();
void InitializeCommandBuffer();
void InitializeRenderer();
void RecordCommandBuffer();
void UpdateUniformBuffer();