This commit is contained in:
2026-02-08 00:32:46 -06:00
parent b97957ec53
commit bad4bd70bc
9 changed files with 42 additions and 445 deletions

View File

@@ -2,32 +2,35 @@
#define RENDERER_H
#include "pch.hpp"
#include "RendererOpenGL/RendererOpenGL.h"
#include "RendererSDL3/RendererSDL3.h"
namespace Archimedes {
class VertexArray {};
class IndexArray {};
class Shader {};
class Renderer {
public:
int w, h;
Renderer() {}
virtual ~Renderer() = 0;
~Renderer() {}
virtual bool init() = 0;
bool init(void* ptr) { return r.init(ptr); }
void render() {
r.render(rc, w, h);
}
virtual void render() = 0;
std::list<std::function<void()>>& getCmdList() {
return rc;
}
RendererImpl& getRendererImpl() { return r; }
private:
std::list<std::function<void()>> rc;
RendererImpl r;
};
}

View File

@@ -3,13 +3,15 @@
#include "pch.hpp"
#include "utils/Renderer/Renderer.h"
#define GLEW_STATIC
#include <GL/glew.h>
namespace Archimedes {
class RendererOpenGL {
class RendererOpenGL : public Renderer {
public:
typedef void renderCmd();
@@ -17,7 +19,7 @@ namespace Archimedes {
RendererOpenGL() {};
~RendererOpenGL() {};
bool init(void* p) {
bool init() {
return glewInit() == GLEW_OK;
};
@@ -27,9 +29,9 @@ namespace Archimedes {
glClearColor(0.2, 0.2, 0.4, 1);
glClear(GL_COLOR_BUFFER_BIT);
for(auto f : cmdList)
f();
}
void draw() {}
};
}

View File

@@ -1,44 +0,0 @@
#if RENDERER == 1
#ifndef RENDERER_OPENGL
#define RENDERER_OPENGL
#include "pch.hpp"
#define GLEW_STATIC
#include <GL/glew.h>
namespace Archimedes {
class RendererOpenGL {
public:
typedef void renderCmd();
RendererOpenGL() {};
~RendererOpenGL() {};
bool init(void* p) {
return glewInit() == GLEW_OK;
};
void render(std::list<std::function<void()>> cmdList, int& w, int& h) {
glViewport(0, 0, w, h);
glClearColor(0.2, 0.2, 0.4, 1);
glClear(GL_COLOR_BUFFER_BIT);
for(auto f : cmdList)
f();
}
};
typedef RendererOpenGL RendererImpl;
}
#endif
#endif

View File

@@ -1,49 +0,0 @@
#if RENDERER == 2
#ifndef RENDERER_SDL3
#define RENDERER_SDL3
#include "pch.hpp"
#include <SDL3/SDL.h>
namespace Archimedes {
class RendererSDL3 {
public:
typedef void renderCmd();
RendererSDL3() {};
~RendererSDL3() { SDL_DestroyRenderer(renderer); };
bool init(void* window) {
renderer = SDL_CreateRenderer((SDL_Window*) window, nullptr);
SDL_SetRenderVSync(renderer, 1);
return renderer != nullptr;
};
void render(std::list<std::function<void()>> cmdList, int& w, int& h) {
//SDL_SetRenderScale(renderer, w, h);
SDL_RenderClear(renderer);
for(auto f : cmdList)
f();
SDL_RenderPresent(renderer);
}
SDL_Renderer* renderer = nullptr;
};
typedef RendererSDL3 RendererImpl;
}
#endif
#endif