SparrowRenderer/src/pipeline.cpp

68 lines
1.4 KiB
C++

#include "pipeline.h"
#include "forwardmodule.h"
#include "shadersource.h"
#include "sparrowrenderer.h"
#include "scene.h"
#include "camera.h"
Pipeline::~Pipeline()
{
for(Module *m : modules)
delete m;
}
SimplePipeline::SimplePipeline(ShaderSource *forwardSource)
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
ForwardModule *forward = new ForwardModule();
forward->setShaderSource(forwardSource);
modules.push_back(forward);
}
void SimplePipeline::renderGL(Scene *scene)
{
glClearColor(m_clearColor.r, m_clearColor.g, m_clearColor.b, 1);
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, width, height);
modules[0]->renderGL(m_camera, scene);
}
void SimplePipeline::resizeGL(int w, int h)
{
width = w;
height = h;
if(m_camera != NULL)
m_camera->resize(w, h);
modules[0]->resize(w, h);
}
void SimplePipeline::refreshScene(Scene *scene)
{
ForwardModule *forward = (ForwardModule*)(modules[0]);
forward->compileShaders(scene);
}
StandardPipeline::StandardPipeline(const Settings &mySettings, const SourcePack &mySourcePack)
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
// TODO
}
void StandardPipeline::renderGL(Scene *scene)
{
}
void StandardPipeline::resizeGL(int w, int h)
{
}