add RendererSDL3

This commit is contained in:
2025-05-05 16:16:56 -05:00
parent b8654659c7
commit 0fb63352a2
8 changed files with 143 additions and 44 deletions

View File

@@ -3,6 +3,7 @@
#include "pch.hpp"
#include "RendererOpenGL/RendererOpenGL.h"
#include "RendererSDL3/RendererSDL3.h"
namespace Archimedes {
class Renderer {
@@ -10,9 +11,11 @@ namespace Archimedes {
public:
int w, h;
Renderer(void* p = nullptr) : ptr(p) {}
~Renderer() {}
bool init() { return r.init(); }
bool init() { return r.init(ptr); }
void render() {
r.render(rc, w, h);
@@ -22,9 +25,12 @@ namespace Archimedes {
return rc;
}
RendererImpl& getRendererImpl() { return r; }
private:
std::list<std::function<void()>> rc;
RendererImpl r;
void* ptr;
};
}

View File

@@ -19,7 +19,7 @@ namespace Archimedes {
RendererOpenGL() {};
~RendererOpenGL() {};
bool init() {
bool init(void* p) {
return glewInit() == GLEW_OK;
};

View File

@@ -0,0 +1,49 @@
#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