#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) { }