libpsys
diff src/psys_gl.c @ 20:0a53b22f7caf
the billboarding was wrong ...
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 18 Sep 2012 09:38:48 +0300 |
parents | 3871a45a4e4b |
children |
line diff
1.1 --- a/src/psys_gl.c Mon Sep 17 08:21:39 2012 +0300 1.2 +++ b/src/psys_gl.c Tue Sep 18 09:38:48 2012 +0300 1.3 @@ -18,17 +18,6 @@ 1.4 1.5 void psys_gl_draw_start(struct psys_emitter *em, void *cls) 1.6 { 1.7 - float xform[16]; 1.8 - 1.9 - glMatrixMode(GL_MODELVIEW); 1.10 - glPushMatrix(); 1.11 - 1.12 - glGetFloatv(GL_MODELVIEW_MATRIX, xform); 1.13 - xform[0] = xform[5] = xform[10] = 1.0; 1.14 - xform[1] = xform[2] = xform[4] = xform[6] = xform[8] = xform[9] = 0.0; 1.15 - 1.16 - glLoadMatrixf(xform); 1.17 - 1.18 glPushAttrib(GL_ENABLE_BIT); 1.19 glDisable(GL_LIGHTING); 1.20 1.21 @@ -41,39 +30,48 @@ 1.22 } 1.23 1.24 glDepthMask(0); 1.25 - 1.26 - glBegin(GL_QUADS); 1.27 - glColor3f(1, 1, 1); 1.28 } 1.29 1.30 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls) 1.31 { 1.32 float hsz = p->size / 2.0; 1.33 1.34 + float xform[16]; 1.35 + 1.36 + glMatrixMode(GL_MODELVIEW); 1.37 + glPushMatrix(); 1.38 + 1.39 + glTranslatef(p->pos.x, p->pos.y, p->pos.z); 1.40 + 1.41 + glGetFloatv(GL_MODELVIEW_MATRIX, xform); 1.42 + xform[0] = xform[5] = xform[10] = 1.0; 1.43 + xform[1] = xform[2] = xform[4] = xform[6] = xform[8] = xform[9] = 0.0; 1.44 + glLoadMatrixf(xform); 1.45 + 1.46 + glBegin(GL_QUADS); 1.47 glColor4f(p->color.x, p->color.y, p->color.z, p->alpha); 1.48 1.49 glTexCoord2f(0, 0); 1.50 - glVertex3f(p->pos.x - hsz, p->pos.y - hsz, p->pos.z); 1.51 + glVertex2f(-hsz, -hsz); 1.52 1.53 glTexCoord2f(1, 0); 1.54 - glVertex3f(p->pos.x + hsz, p->pos.y - hsz, p->pos.z); 1.55 + glVertex2f(hsz, -hsz); 1.56 1.57 glTexCoord2f(1, 1); 1.58 - glVertex3f(p->pos.x + hsz, p->pos.y + hsz, p->pos.z); 1.59 + glVertex2f(hsz, hsz); 1.60 1.61 glTexCoord2f(0, 1); 1.62 - glVertex3f(p->pos.x - hsz, p->pos.y + hsz, p->pos.z); 1.63 + glVertex2f(-hsz, hsz); 1.64 + glEnd(); 1.65 + 1.66 + glMatrixMode(GL_MODELVIEW); 1.67 + glPopMatrix(); 1.68 } 1.69 1.70 void psys_gl_draw_end(struct psys_emitter *em, void *cls) 1.71 { 1.72 - glEnd(); 1.73 - 1.74 glDepthMask(1); 1.75 glPopAttrib(); 1.76 - 1.77 - glMatrixMode(GL_MODELVIEW); 1.78 - glPopMatrix(); 1.79 } 1.80 1.81