SparrowRenderer/src/pipeline.cpp

81 lines
1.8 KiB
C++

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