#include "phongmodule.h" #include "lights.h" #include "shader.h" #include "phongentity.h" #include "camera.h" #include "mesh.h" #include "sparrowrenderer.h" #include "glassert.h" #include Shader* PhongModule::shaders[NB_SHADERS] = {0, 0}; PhongModule::PhongModule(Lights::Light* myDirLight, Lights* myPointLights) : dirLight(myDirLight), pointLights(myPointLights) { if(!SparrowRenderer::isModernOpenGLAvailable()) { glAssert(glEnable(GL_LIGHTING)); glAssert(glEnable(GL_LIGHT0)); glAssert(glLightfv(GL_LIGHT0, GL_AMBIENT, glm::value_ptr(glm::vec4(glm::vec3(0.1f), 1)))); glAssert(glLightfv(GL_LIGHT0, GL_POSITION, glm::value_ptr(glm::vec4(dirLight->position, 0)))); // TODO add point lights } } void PhongModule::addEntity(PhongEntity* myEntity) { entities.push_back(myEntity); } void PhongModule::clearEntities() { entities.clear(); } void PhongModule::renderGL(Camera* myCamera) { if(!SparrowRenderer::isModernOpenGLAvailable()) { glLoadIdentity(); glAssert(glLightfv(GL_LIGHT0, GL_DIFFUSE, glm::value_ptr(glm::vec4(dirLight->color, 1)))); glAssert(glLightfv(GL_LIGHT0, GL_SPECULAR, glm::value_ptr(glm::vec4(dirLight->color, 1)))); } for(PhongEntity* e : entities) e->draw(myCamera->getViewMatrix(), myCamera->getProjectionMatrix(), dirLight, pointLights); } void PhongModule::setShader(ShaderType slot, Shader* myShader) { shaders[slot] = myShader; } Shader* PhongModule::getShader(ShaderType slot) { return shaders[slot]; }