← Back to file list Raw

src/CRendererBase.h

#pragma once
#include "SDL3/SDL.h"
#include <string>
#include <cstdint>
#include <memory>
#include "CModelBase.h"
#include "CTransform.h"
#include "CCamera.h"
#include "CDrawable.h"
#define LINK_RENDERER_TO_CLASS(_class, name) std::string _class::GetType() const { return #name; }; CFactoryInitter<_class, CRendererBase> __renderer_initter_ ## name = CFactoryInitter<_class, CRendererBase>(#name, std::function<void(CFactoryInitter<_class, CRendererBase>*)>([](CFactoryInitter<_class, CRendererBase>* tter) -> void { tter->m_factory = &CEngine::GetInstance()->RenderersFactory; }));
#define DEFINE_RENDERER() std::string GetType() const override
class CRendererBase
{
public:
virtual ~CRendererBase() = default;
virtual void Init(SDL_Window* window) = 0;
virtual size_t GetGenericFlag() const = 0;
virtual void ClearWindow() = 0;
virtual void Display() = 0;
virtual void SetupCamera(std::shared_ptr<CCamera> camera);
virtual void DrawModel(std::shared_ptr<CModelBase> model, const CTransform& transform);
void Update();
virtual void V_Update();
virtual std::shared_ptr<CDrawable> CreateAnimatedDrawable() const;
virtual std::shared_ptr<CDrawable> CreateNonAnimatedDrawable() const;
virtual std::string GetModelType() const; //TODO maybe better solution?
virtual std::string GetMaterialType() const; //TODO maybe better solution?
virtual std::string GetType() const;
};