little fix

This commit is contained in:
Anselme 2015-10-13 17:38:49 +02:00
parent fc2e3c5791
commit 124ef6ec2e
2 changed files with 26 additions and 22 deletions

View File

@ -114,7 +114,7 @@ void PhongEntity::crappyInit()
for(int i=0; i<mesh->indiceGroups.size(); ++i) for(int i=0; i<mesh->indiceGroups.size(); ++i)
{ {
PhongMaterial* mat = (PhongMaterial*)(mesh->indiceGroups[i].material); PhongMaterial* mat = (PhongMaterial*)(mesh->indiceGroups[i].material);
mat->crappyBindAttributes(); mat->bindAttributes();
glAssert(glBegin(GL_TRIANGLES)); glAssert(glBegin(GL_TRIANGLES));
for(int j=0; j<mesh->indiceGroups[i].indices.size(); ++j) for(int j=0; j<mesh->indiceGroups[i].indices.size(); ++j)
{ {

View File

@ -1,6 +1,8 @@
#include "phongmaterial.h" #include "phongmaterial.h"
#include "texture.h" #include "texture.h"
#include "phongmodule.h" #include "phongmodule.h"
#include "sparrowrenderer.h"
#include "glassert.h"
#include <glm/ext.hpp> #include <glm/ext.hpp>
#define TEX_ID 0 #define TEX_ID 0
@ -12,31 +14,33 @@ void PhongMaterial::updateShader()
void PhongMaterial::bindAttributes() void PhongMaterial::bindAttributes()
{ {
shader->bind(); if(SparrowRenderer::isModernOpenGLAvailable())
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->bind();
shader->bindInteger(shader->getLocation("baseTexture"), TEX_ID); 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);
else else
{ {
GLenum texSlot = GL_TEXTURE0+TEX_ID; glAssert(glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, glm::value_ptr(glm::vec4(emission, 1))));
glActiveTexture(texSlot); glAssert(glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, glm::value_ptr(glm::vec4(diffuse, 1))));
glBindTexture(GL_TEXTURE_2D, 0); glAssert(glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, glm::value_ptr(glm::vec4(specular, 1))));
glAssert(glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess));
if(diffuse_texture != NULL)
diffuse_texture->bind(TEX_ID);
else
{
GLenum texSlot = GL_TEXTURE0+TEX_ID;
glAssert(glActiveTexture(texSlot));
glAssert(glBindTexture(GL_TEXTURE_2D, 0));
}
} }
} }