From 0262eeea8762cdeb14c98d22473ebf0fd6b37bf9 Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 14 Aug 2025 00:13:38 +0200 Subject: chore: prepare for Vulkan --- src/rendering/index_buffer.cpp | 3 +++ src/rendering/renderer.cpp | 3 +++ src/rendering/shader.cpp | 7 +++++++ src/rendering/texture.cpp | 5 +++++ src/rendering/vertex_array.cpp | 3 +++ src/rendering/vertex_buffer.cpp | 5 ++++- 6 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src/rendering') diff --git a/src/rendering/index_buffer.cpp b/src/rendering/index_buffer.cpp index 4e38b36..1095e3b 100644 --- a/src/rendering/index_buffer.cpp +++ b/src/rendering/index_buffer.cpp @@ -2,6 +2,7 @@ #include "renderer.h" #include "platform/opengl/opengl_index_buffer.h" +#include "platform/vulkan/vulkan_index_buffer.h" namespace Donut { @@ -11,6 +12,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return new OpenGLIndexBuffer(indices, count); + case RendererAPI::API::Vulkan: + return new VulkanIndexBuffer((uint32_t*)indices, count); default: return nullptr; } diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index bd921eb..3343cce 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -1,5 +1,6 @@ #include "renderer.h" #include "platform/opengl/opengl_renderer_api.h" +#include "platform/vulkan/vulkan_renderer_api.h" #include #include @@ -11,6 +12,8 @@ namespace Donut { case API::OpenGL: return std::make_unique(); + case API::Vulkan: + return std::make_unique(); default: return nullptr; } diff --git a/src/rendering/shader.cpp b/src/rendering/shader.cpp index d3fef07..1e84125 100644 --- a/src/rendering/shader.cpp +++ b/src/rendering/shader.cpp @@ -1,6 +1,7 @@ #include "shader.h" #include "renderer.h" #include "platform/opengl/opengl_shader.h" +#include "platform/vulkan/vulkan_shader.h" #include namespace Donut @@ -11,6 +12,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return new OpenGLShader(filepath); + case RendererAPI::API::Vulkan: + return new VulkanShader(filepath); default: return nullptr; } @@ -22,6 +25,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return new OpenGLShader(name, vertex_src, fragment_src); + case RendererAPI::API::Vulkan: + return new VulkanShader(name, vertex_src, fragment_src); default: return nullptr; } @@ -33,6 +38,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return new OpenGLShader(name, compute_src); + case RendererAPI::API::Vulkan: + return new VulkanShader(name, compute_src); default: return nullptr; } diff --git a/src/rendering/texture.cpp b/src/rendering/texture.cpp index 9603034..36189a3 100644 --- a/src/rendering/texture.cpp +++ b/src/rendering/texture.cpp @@ -1,6 +1,7 @@ #include "texture.h" #include "renderer.h" #include "../platform/opengl/opengl_texture.h" +#include "../platform/vulkan/vulkan_texture.h" namespace Donut { @@ -10,6 +11,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return std::make_shared(width, height); + case RendererAPI::API::Vulkan: + return std::make_shared(width, height); case RendererAPI::API::None: return nullptr; default: @@ -23,6 +26,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return std::make_shared(path); + case RendererAPI::API::Vulkan: + return std::make_shared(path); case RendererAPI::API::None: return nullptr; default: diff --git a/src/rendering/vertex_array.cpp b/src/rendering/vertex_array.cpp index 48eeb5a..8057a3e 100644 --- a/src/rendering/vertex_array.cpp +++ b/src/rendering/vertex_array.cpp @@ -1,6 +1,7 @@ #include "vertex_array.h" #include "renderer.h" #include "platform/opengl/opengl_vertex_array.h" +#include "platform/vulkan/vulkan_vertex_array.h" namespace Donut { @@ -21,6 +22,8 @@ namespace Donut { case RendererAPI::API::OpenGL: return new OpenGLVertexArray(); + case RendererAPI::API::Vulkan: + return new VulkanVertexArray(); default: return nullptr; } diff --git a/src/rendering/vertex_buffer.cpp b/src/rendering/vertex_buffer.cpp index a349e78..32ae10a 100644 --- a/src/rendering/vertex_buffer.cpp +++ b/src/rendering/vertex_buffer.cpp @@ -1,15 +1,18 @@ #include "vertex_buffer.h" #include "renderer.h" #include "platform/opengl/opengl_vertex_buffer.h" +#include "platform/vulkan/vulkan_vertex_buffer.h" namespace Donut { - VertexBuffer* VertexBuffer::create(const void* data, uint32_t size) + VertexBuffer* VertexBuffer::create(const void* data, uint32_t size) { switch (Renderer::get_api()) { case RendererAPI::API::OpenGL: return new OpenGLVertexBuffer(data, size); + case RendererAPI::API::Vulkan: + return new VulkanVertexBuffer((float*)data, size); default: return nullptr; } -- cgit v1.3