diff --git a/dependencies b/dependencies index 2679ad1..34f1930 100644 --- a/dependencies +++ b/dependencies @@ -1,5 +1,6 @@ IncludeDirs["bakara"] = "%{wks.location}/vendor/bakara/src" IncludeDirs["glm"] = "%{wks.location}/vendor/glm" +IncludeDirs["stb"] = "%{wks.location}/vendor/stb" group "Bakara" include "vendor/bakara" diff --git a/package.json b/package.json index 4e8f8b2..8e07777 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "includes": [ "bakara", - "spdlog", "glm" ], "packages": @@ -37,6 +36,10 @@ { "author": "anulax1225", "name": "imgui" + }, + { + "author": "anulax1225", + "name": "stb" } ] } \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index 094e5d4..e739176 100644 --- a/premake5.lua +++ b/premake5.lua @@ -10,6 +10,8 @@ project "bakara" { "%{wks.location}/vendor/glm/glm/**.hpp", "%{wks.location}/vendor/glm/glm/**.inl", + "%{wks.location}/vendor/stb/stb_image.h", + "%{wks.location}/vendor/stb/stb_image.cpp", "src/bakara/**.h", "src/bakara/**.cpp", "src/platforms/**.h", @@ -30,7 +32,8 @@ project "bakara" "%{IncludeDirs.glad}", "%{IncludeDirs.glfw}", "%{IncludeDirs.imgui}", - "%{IncludeDirs.bakatools}" + "%{IncludeDirs.bakatools}", + "%{InlcudeDirs.stb}" } links diff --git a/src/bakara/renderer/buffer.cpp b/src/bakara/renderer/buffer.cpp index ea69da9..aace935 100644 --- a/src/bakara/renderer/buffer.cpp +++ b/src/bakara/renderer/buffer.cpp @@ -1,25 +1,30 @@ #include "buffer.h" #include "bakara/renderer/renderer.h" +#include "bakatools/container/types.h" #include "bakatools/logging/assert.h" #include "platforms/opengl/opengl_buffer.h" namespace Bk { - VertexBuffer* VertexBuffer::Create(float *vertices, u32 size) + Ref VertexBuffer::Create(float *vertices, u32 size) { switch (Renderer::GetAPI()) { case Renderer::API::None: BK_MSG_ASSERT(false, "API not supported"); return nullptr; - case Renderer::API::Opengl: return new Platform::OpenglVertexBuffer(vertices, size); + case Renderer::API::Opengl: return CreateRef(vertices, size); } + BK_MSG_ASSERT(false, "API not supported"); + return nullptr; } - IndexBuffer* IndexBuffer::Create(u32* indices, u32 count) + Ref IndexBuffer::Create(u32* indices, u32 count) { switch (Renderer::GetAPI()) { case Renderer::API::None: BK_MSG_ASSERT(false, "API not supported"); return nullptr; - case Renderer::API::Opengl: return new Platform::OpenglIndexBuffer(indices, count); + case Renderer::API::Opengl: return CreateRef(indices, count); } + BK_MSG_ASSERT(false, "API not supported"); + return nullptr; } } \ No newline at end of file diff --git a/src/bakara/renderer/buffer.h b/src/bakara/renderer/buffer.h index 60b3822..d5242ac 100644 --- a/src/bakara/renderer/buffer.h +++ b/src/bakara/renderer/buffer.h @@ -12,7 +12,7 @@ namespace Bk virtual void Unbind() = 0; virtual void SetLayout(BufferLayout layout) = 0; virtual BufferLayout& GetLayout() = 0; - static VertexBuffer* Create(float* vertices, u32 size); + static Ref Create(float* vertices, u32 size); }; class IndexBuffer @@ -22,6 +22,6 @@ namespace Bk virtual void Bind() = 0; virtual void Unbind() = 0; virtual u32 GetCount() = 0; - static IndexBuffer* Create(u32* indices, u32 count); + static Ref Create(u32* indices, u32 count); }; } \ No newline at end of file diff --git a/src/bakara/renderer/renderer.cpp b/src/bakara/renderer/renderer.cpp index 3184153..5f9ac10 100644 --- a/src/bakara/renderer/renderer.cpp +++ b/src/bakara/renderer/renderer.cpp @@ -20,8 +20,8 @@ namespace Bk { va->Bind(); shader->Bind(); - shader->Set("viewProjection", sceneData->VPMatrix); - shader->Set("transform", transform); + shader->Set("u_ViewProjection", sceneData->VPMatrix); + shader->Set("u_Transform", transform); RenderCommand::DrawIndexed(va); } } \ No newline at end of file diff --git a/src/bakara/renderer/shader.cpp b/src/bakara/renderer/shader.cpp index ecbce97..c557917 100644 --- a/src/bakara/renderer/shader.cpp +++ b/src/bakara/renderer/shader.cpp @@ -5,12 +5,14 @@ namespace Bk { - Shader* Shader::Create(std::string vertexSrc, std::string fragSrc) + Ref Shader::Create(std::string vertexSrc, std::string fragSrc) { switch(Renderer::GetAPI()) { case Renderer::API::None: BK_MSG_ASSERT(false, "API not supported"); return nullptr; - case Renderer::API::Opengl: return new Platform::OpenglShader(vertexSrc, fragSrc); + case Renderer::API::Opengl: return CreateRef(vertexSrc, fragSrc); } + BK_MSG_ASSERT(false, "API not supported"); + return nullptr; } } \ No newline at end of file diff --git a/src/bakara/renderer/shader.h b/src/bakara/renderer/shader.h index 884c6e5..a472139 100644 --- a/src/bakara/renderer/shader.h +++ b/src/bakara/renderer/shader.h @@ -1,6 +1,7 @@ #pragma once #include "bakara/math/types.h" +#include "bakatools/container/types.h" #include namespace Bk @@ -23,6 +24,6 @@ namespace Bk virtual void Set(const std::string name, Mat3 val) = 0; virtual void Set(const std::string name, Mat4 val) = 0; - static Shader* Create(std::string vertexSrc, std::string fragSrc); + static Ref Create(std::string vertexSrc, std::string fragSrc); }; } \ No newline at end of file diff --git a/src/bakara/renderer/texture.cpp b/src/bakara/renderer/texture.cpp index e69de29..aa556cf 100644 --- a/src/bakara/renderer/texture.cpp +++ b/src/bakara/renderer/texture.cpp @@ -0,0 +1,18 @@ +#include "bakara/renderer/renderer.h" +#include "bakatools/logging/assert.h" +#include "texture.h" +#include "platforms/opengl/opengl_texture.h" + +namespace Bk +{ + Ref Texture2D::Create(const std::string& filePath) + { + switch (Renderer::GetAPI()) + { + case Renderer::API::None: BK_MSG_ASSERT(false, "API not supported"); return nullptr; + case Renderer::API::Opengl: return CreateRef(filePath); + } + BK_MSG_ASSERT(false, "API not supported"); + return nullptr; + } +} \ No newline at end of file diff --git a/src/bakara/renderer/texture.h b/src/bakara/renderer/texture.h index e69de29..ed7ba2c 100644 --- a/src/bakara/renderer/texture.h +++ b/src/bakara/renderer/texture.h @@ -0,0 +1,22 @@ +#pragma once + +#include "bakatools/container/types.h" +#include + +namespace Bk +{ + class Texture + { + public: + virtual ~Texture() {} + virtual u32 GetWidth() = 0; + virtual u32 GetHeight() = 0; + virtual void Bind() = 0; + }; + + class Texture2D : public Texture + { + public: + static Ref Create(const std::string& filePath); + }; +} \ No newline at end of file diff --git a/src/bakara/renderer/vertex_array.cpp b/src/bakara/renderer/vertex_array.cpp index ddf4764..d976397 100644 --- a/src/bakara/renderer/vertex_array.cpp +++ b/src/bakara/renderer/vertex_array.cpp @@ -5,12 +5,14 @@ namespace Bk { - VertexArray* VertexArray::Create() + Ref VertexArray::Create() { switch (Renderer::GetAPI()) { case Renderer::API::None: BK_MSG_ASSERT(false, "API not supported"); return nullptr; - case Renderer::API::Opengl: return new Platform::OpenglVertexArray(); + case Renderer::API::Opengl: return CreateRef(); } + BK_MSG_ASSERT(false, "API not supported"); + return nullptr; } } \ No newline at end of file diff --git a/src/bakara/renderer/vertex_array.h b/src/bakara/renderer/vertex_array.h index 35aa4cd..9c27784 100644 --- a/src/bakara/renderer/vertex_array.h +++ b/src/bakara/renderer/vertex_array.h @@ -16,6 +16,6 @@ namespace Bk virtual std::vector> GetVertexBuffers() = 0; virtual Ref GetIndexbuffer() = 0; - static VertexArray* Create(); + static Ref Create(); }; } \ No newline at end of file diff --git a/src/platforms/glfw/glfw_window.cpp b/src/platforms/glfw/glfw_window.cpp index e89f008..80bee01 100644 --- a/src/platforms/glfw/glfw_window.cpp +++ b/src/platforms/glfw/glfw_window.cpp @@ -42,7 +42,7 @@ namespace Bk { void GlfwWindow::Init() { h_IsOpen = true; - BK_CORE_INFO("Creating window : {0} ({1}, {2})", p_data.title, p_data.width, p_data.height); + BK_CORE_INFO("Creating window '{0}' ({1}, {2})", p_data.title, p_data.width, p_data.height); if (!p_glfw_Initialized++) { int success = glfwInit(); diff --git a/src/platforms/opengl/opengl_texture.cpp b/src/platforms/opengl/opengl_texture.cpp new file mode 100644 index 0000000..ca1ad75 --- /dev/null +++ b/src/platforms/opengl/opengl_texture.cpp @@ -0,0 +1,22 @@ +#include "opengl_texture.h" + +#include +#include + +namespace Bk::Platform +{ + OpenglTexture2D::OpenglTexture2D(const std::string& filePath) + { + + } + + OpenglTexture2D::~OpenglTexture2D() + { + + } + + void OpenglTexture2D::Bind() + { + + } +} \ No newline at end of file diff --git a/src/platforms/opengl/opengl_texture.h b/src/platforms/opengl/opengl_texture.h new file mode 100644 index 0000000..a9107cc --- /dev/null +++ b/src/platforms/opengl/opengl_texture.h @@ -0,0 +1,20 @@ +#pragma once + +#include "bakara/renderer/texture.h" + +namespace Bk::Platform +{ + class OpenglTexture2D : public Texture2D + { + public: + OpenglTexture2D(const std::string& filePath); + virtual ~OpenglTexture2D(); + + virtual u32 GetWidth() override { return width; } + virtual u32 GetHeight() override { return height; } + virtual void Bind() override; + private: + u32 id; + u32 width, height; + }; +} \ No newline at end of file