summaryrefslogtreecommitdiffstats
path: root/render.c
diff options
context:
space:
mode:
Diffstat (limited to 'render.c')
-rw-r--r--render.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/render.c b/render.c
index 7500281..ba57e2a 100644
--- a/render.c
+++ b/render.c
@@ -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]);