Add 2D Batch renderer
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user