81 lines
1.8 KiB
C++
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)
|
|
{
|
|
|
|
}
|