Files
inferno-cpu/src/core/renderer.cpp
2019-07-29 05:49:35 +01:00

67 lines
1.4 KiB
C++

#include "../display/display.hpp"
#include "../pixel.hpp"
#include "./renderer.hpp"
#include "../engine/progressiverenderer.hpp"
Renderer::Renderer(OperationMode mode) {
m_mode = mode;
}
void Renderer::SetMode(OperationMode mode, int samples) {
m_mode = mode;
m_samples = samples;
}
void Renderer::Init() {
}
void Renderer::Init(DisplayInterface* display) {
// Add warning
if (!display) return;
if(!m_framebuffer) {
m_framebuffer = display->Framebuffer;
}
m_interface = display;
}
void Renderer::InitRender(Scene* scene) {
m_scene = scene;
RendererInitialized = true;
}
void Renderer::Render() {
if (!RendererInitialized) return;
if (m_mode == MODE_PROGRESSIVE_GUI || m_mode == MODE_PROGRESSIVE_IMG) {
RenderProgressive();
} else if (m_mode == MODE_SAMPLES_IMG) {
RenderSamples();
} else {
// Add an error & return
}
}
void Renderer::Render(uint32_t* framebuffer) {
if (!RendererInitialized) return;
m_framebuffer = framebuffer;
if (m_mode == MODE_PROGRESSIVE_GUI || m_mode == MODE_PROGRESSIVE_IMG) {
RenderProgressive();
} else if (m_mode == MODE_SAMPLES_IMG) {
RenderSamples();
} else {
// Add an error & return
}
}
void Renderer::RenderProgressive() {
m_progressive = new ProgressiveRenderer();
m_progressive->Init(m_interface, m_scene);
m_progressive->Render();
}
void Renderer::RenderSamples() {
}