Parse all lighting

This commit is contained in:
2016-05-12 13:17:03 +02:00
parent 11f07b154b
commit 3d97ade42e
3 changed files with 37 additions and 8 deletions
+5 -5
View File
@@ -151,10 +151,10 @@ void configureOpenGL()
//Lighting
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess[] = { 50.0 };
GLfloat light_position[] = { 30.0, 30.0, 30.0, 0.0 };
GLfloat light_diffuse[] = { 1.7, 1.7, 1.7, 1.0 };
GLfloat light_ambient[] = { 1.7, 1.7, 1.7, 1.0 };
GLfloat mat_shininess[] = { 20.0 };
GLfloat light_position[] = { 30.0, 30.0, 30.0, 1.0 };
GLfloat light_diffuse[] = { 2.0, 2.0, 2.0, 1.0 };
GLfloat light_ambient[] = { 2.0, 2.0, 2.0, 1.0 };
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
@@ -174,5 +174,5 @@ void configureOpenGL()
void loadModels()
{
models.push_back(new Model("models/ship/Zwaard.obj"));
models.push_back(new Model("models/ship/shipA_OBJ.obj"));
}
+27 -3
View File
@@ -134,9 +134,22 @@ void Model::draw()
glDisable(GL_TEXTURE_2D);
float color[4] = { 1, 0, 0, 1 };
memcpy(color, materials[g->materialIndex]->diffuseColor.v, 3 * sizeof(float));
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, color);
if (materials[g->materialIndex]->hasDiffuse)
{
memcpy(color, materials[g->materialIndex]->diffuseColor.v, 3 * sizeof(float));
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);
}
else if (materials[g->materialIndex]->hasAmbient)
{
memcpy(color, materials[g->materialIndex]->ambientColor.v, 3 * sizeof(float));
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, color);
}
else if (materials[g->materialIndex]->hasSpecular)
{
memcpy(color, materials[g->materialIndex]->specularColor.v, 3 * sizeof(float));
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, color);
}
}
glBegin(GL_TRIANGLES);
@@ -204,8 +217,19 @@ void Model::loadMaterialFile(std::string fileName, std::string dirName)
}
else if (params[0] == "kd")
{
currentMaterial->hasDiffuse = true;
currentMaterial->diffuseColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
}
else if (params[0] == "ka")
{
currentMaterial->hasAmbient = true;
currentMaterial->ambientColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
}
else if (params[0] == "ks")
{
currentMaterial->hasSpecular = true;
currentMaterial->specularColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
}
else
std::cout << "Didn't parse " << params[0] << " in material file" << std::endl;
}
+5
View File
@@ -36,7 +36,12 @@ private:
Texture* texture;
bool hasTexture;
bool hasDiffuse;
Vec3f diffuseColor;
bool hasAmbient;
Vec3f ambientColor;
bool hasSpecular;
Vec3f specularColor;
};