SparrowRenderer/phongmaterial.cpp

31 lines
841 B
C++

#include "phongmaterial.h"
#include "texture.h"
#include "phongmodule.h"
#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::setTexture(Texture* myTexture)
{
diffuse_texture = myTexture;
updateShader();
}