48 lines
1.0 KiB
C++
48 lines
1.0 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 void useShader(Shader& shader) = 0;
|
|
|
|
virtual RenderTarget createRenderTarget(
|
|
VertexBuffer vb,
|
|
IndexArray ia,
|
|
VertexLayout layout,
|
|
Shader& s
|
|
) = 0;
|
|
|
|
virtual void useRenderTarget(RenderTarget& rt) = 0;
|
|
|
|
virtual void draw(const RenderTarget&) = 0;
|
|
|
|
virtual Renderer* getRendererImpl() = 0;
|
|
|
|
};
|
|
}
|
|
|
|
#endif
|