added basic structures

This commit is contained in:
2026-01-17 13:48:25 +01:00
parent 0e4689cf35
commit 53c7d564d7
23 changed files with 2247 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
#pragma once
#include "Vector2.hpp"
#include "Vector3.hpp"
#include <vector>
namespace TSE
{
class IRenderable
{
public:
virtual const Vector3* GetVertices() const = 0;
virtual const Vector2* GetUVs() const = 0;
virtual const std::vector<ushort> GetIndices() const = 0;
virtual size_t GetVertexCount() const = 0;
virtual ~IRenderable() = default;
};
} // namespace TSE

View File

@@ -0,0 +1,3 @@
#include "IRenderer.hpp"
std::vector<TSE::Camera*> TSE::IRenderer::camerasToRenderWith = std::vector<TSE::Camera*>();

View File

@@ -0,0 +1,26 @@
#pragma once
#include "IShader.hpp"
#include "TransformationStack.hpp"
#include "elements/Transformable.hpp"
namespace TSE
{
class Camera;
class IRenderer
{
public:
static std::vector<Camera*> camerasToRenderWith;
virtual void End() = 0;
virtual void Flush() = 0;
virtual void Begin() = 0;
virtual void Submit(const Transformable& trans, TransformationStack& stack) = 0;
virtual void Submit(const Transformable& trans, IShader* shader, TransformationStack& stack) = 0;
virtual ~IRenderer() = default;
};
} // namespace TSE

View File

@@ -0,0 +1,29 @@
#pragma once
#include "Types.hpp"
#include "Matrix4x4.hpp"
#include "Vector2.hpp"
#include "Vector3.hpp"
#include "Vector4.hpp"
namespace TSE
{
class IShader
{
public:
virtual void Bind() const = 0;
virtual void Unbind() const = 0;
virtual void SetUniform(const char* name, int value) = 0;
virtual void SetUniform(const char* name, const int* value, int count) = 0;
virtual void SetUniform(const char* name, const Matrix4x4* value) = 0;
virtual void SetUniform(const char* name, float value) = 0;
virtual void SetUniform(const char* name, const float* value, int count) = 0;
virtual void SetUniform(const char* name, const Vector2* value) = 0;
virtual void SetUniform(const char* name, const Vector3* value) = 0;
virtual void SetUniform(const char* name, const Vector4* value) = 0;
virtual ~IShader() = default;
};
} // namespace TSE

View File

@@ -0,0 +1,16 @@
#pragma once
#include "Vector2.hpp"
namespace TSE
{
class ITexture
{
public:
virtual ~ITexture() = default;
virtual Vector2 size() const = 0;
virtual float width() const = 0;
virtual float height() const = 0;
virtual uint GetTextureId() const = 0;
};
} // namespace TSE