diff options
Diffstat (limited to 'render.c')
-rw-r--r-- | render.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -10,7 +10,7 @@ extern PLAYER player; -extern LEVEL level; +extern LEVEL *level; extern GLuint sphere; extern int nLights; extern LIGHT *lights; @@ -47,7 +47,7 @@ void Render() { glTranslatef(-player.pos.x, -player.pos.y, -player.pos.z); - room = DrawRoom(&level, player.room); + room = DrawRoom(level, player.room); qsort(room->polygons, room->nPolygons, sizeof(POLYGON), SortByTex); glDepthMask(GL_TRUE); @@ -118,14 +118,14 @@ void Render() { c = VectorMul(lights[i].diffuse, 1.0/(d*d)); glColor3fv((GLfloat*)&c); - p = VectorAdd(lights[i].pos, VectorMul(room->polygons[j].normal, d)); - v1 = VectorNormalize(VectorSub(room->polygons[j].vertices[0], room->polygons[j].vertices[1])); - v2 = VectorCross(v1, room->polygons[j].normal); for(k = 0; k < 3; k++) { + p = VectorAdd(lights[i].pos, VectorMul(room->polygons[j].normals[k], d)); v = VectorSub(room->polygons[j].vertices[k], p); + v2 = VectorCross(v1, room->polygons[j].normals[k]); + glMultiTexCoord2f(0, VectorDot(v, v1)*0.04 / d + 0.5, VectorDot(v, v2)*0.04 / d + 0.5); glMultiTexCoord2fv(1, (GLfloat*)&room->polygons[j].texcoords[k]); glVertex3fv((GLfloat*)&room->polygons[j].vertices[k]); |