48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
#ifndef RENDERER_H
|
|
#define RENDERER_H
|
|
|
|
#include "pch.hpp"
|
|
|
|
#include "extratools.h"
|
|
|
|
#include "RenderTarget.h"
|
|
|
|
namespace Archimedes {
|
|
|
|
class Renderer {
|
|
|
|
public:
|
|
int w, h;
|
|
|
|
glm::vec4 clearColor = { 0.0f, 0.0f, 0.0f, 1.0f };
|
|
|
|
Renderer() : w(0), h(0) {}
|
|
|
|
virtual ~Renderer() {}
|
|
|
|
virtual bool init() = 0;
|
|
|
|
virtual void render() = 0;
|
|
|
|
virtual Shader createShader(const std::string& vs, const std::string& fs, const Shader::LoadType& lt) = 0;
|
|
|
|
virtual RenderTarget* createRenderTarget(
|
|
const void* data,
|
|
size_t size,
|
|
unsigned int* indices,
|
|
size_t count,
|
|
VertexLayout layout,
|
|
const std::string& vs,
|
|
const std::string& fs,
|
|
const Shader::LoadType& lt
|
|
) = 0;
|
|
|
|
virtual void draw(const RenderTarget*) = 0;
|
|
|
|
virtual Renderer* getRendererImpl() = 0;
|
|
|
|
};
|
|
}
|
|
|
|
#endif
|