#include "phongmaterial.h" #include "texture.h" #include "phongmodule.h" #include #define TEX_ID 0 void PhongMaterial::updateShader() { shader = PhongModule::getShader(diffuse_texture == NULL ? PhongModule::PHONG_COLOR : PhongModule::PHONG_TEXTURE); } void PhongMaterial::bindAttributes() { shader->bind(); shader->bindVec3(shader->getLocation("materialAmbient"), emission); shader->bindVec3(shader->getLocation("materialKd"), diffuse); shader->bindVec3(shader->getLocation("materialKs"), specular); shader->bindFloat(shader->getLocation("materialNs"), shininess); if(diffuse_texture != NULL) { diffuse_texture->bind(TEX_ID); shader->bindInteger(shader->getLocation("baseTexture"), TEX_ID); } } void PhongMaterial::crappyBindAttributes() { glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, glm::value_ptr(glm::vec4(emission, 1))); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, glm::value_ptr(glm::vec4(diffuse, 1))); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, glm::value_ptr(glm::vec4(specular, 1))); glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess); if(diffuse_texture != NULL) diffuse_texture->bind(TEX_ID); } void PhongMaterial::setTexture(Texture* myTexture) { diffuse_texture = myTexture; updateShader(); }