Well, no much to say about the render loop:
glEnableClientState(GL_VERTEX_ARRAY); glBindBufferARB(GL_ARRAY_BUFFER_ARB, o->BufferHandles[0]); glVertexPointer(3, GL_FLOAT, 0, 0); glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, o->BufferHandles[1]); glEnableClientState(GL_NORMAL_ARRAY); glBindBufferARB(GL_ARRAY_BUFFER_ARB, o->BufferHandles[2]); glNormalPointer(GL_FLOAT, 0, 0); float defcol [] = {1.0f, 1.0f, 1.0f, 1.0f}; float defamb [] = {0.2f, 0.2f, 0.2f, 1.0f}; float defdif [] = {0.8f, 0.8f, 0.8f, 1.0f}; float defspec [] = {0.0f, 0.0f, 0.0f, 1.0f}; float defshin = 0.0f; for (int i = 0; i < o->GroupCount; i++) { int matid = o->GroupedTriangles.triangle->MaterialID; glActiveTexture(GL_TEXTURE0); glDisable(GL_TEXTURE_2D); glActiveTexture(GL_TEXTURE1); glDisable(GL_TEXTURE_2D); glActiveTexture(GL_TEXTURE0); if (matid == -1) { glColor4fv(defcol); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, defamb); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, defdif); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, defspec); glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, defshin); } if (matid > -1) { glColor4fv(defcol); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, SceneMaterials[matid]->ambcol); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, SceneMaterials[matid]->difcol); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, SceneMaterials[matid]->speccol); glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, SceneMaterials[matid]->shinestrength); //glMaterialf(GL_BACK, GL_SHININESS, SceneMaterials[matid]->shininess); //glColor3ub(SceneMaterials[o->triangles->MaterialID]->color[0],SceneMaterials[o->triangles->MaterialID]->color[1], //SceneMaterials[o->triangles->MaterialID]->color[2]); } PolygonsDrawn += o->GroupedTriangles.tricount; glDrawElements(GL_TRIANGLES, o->GroupedTriangles.tricount * 3, GL_UNSIGNED_INT, (void*)(o->GroupedTriangles.tristart * 3 * sizeof(unsigned int))); }// glDrawElements(GL_TRIANGLES, o->TriangleCount * 3, GL_UNSIGNED_INT, 0); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY) }
This gives me a completely white polygon for every polygon that's in front view for the light. If I set
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR .. to (0, 0, 0, 1) I can see them again.