libpsys
annotate src/psys_gl.c @ 1:874a942853ad
foobar
author | John Tsiombikas <nuclear@mutantstargoat.com> |
---|---|
date | Sat, 24 Sep 2011 20:44:42 +0300 |
parents | 1c8eb90a6989 |
children | 6e5342a2529a |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef __APPLE__ |
nuclear@0 | 2 #include <GL/gl.h> |
nuclear@0 | 3 #else |
nuclear@0 | 4 #include <OpenGL/gl.h> |
nuclear@0 | 5 #endif |
nuclear@0 | 6 |
nuclear@0 | 7 #include "psys_impl.h" |
nuclear@0 | 8 |
nuclear@0 | 9 void psys_gl_draw_start(struct psys_emitter *em, void *cls) |
nuclear@0 | 10 { |
nuclear@0 | 11 float xform[16]; |
nuclear@0 | 12 |
nuclear@1 | 13 vec3_t pos = psys_get_pos(em); |
nuclear@1 | 14 |
nuclear@1 | 15 glPointSize(5.0); |
nuclear@1 | 16 glBegin(GL_POINTS); |
nuclear@1 | 17 glColor3f(1, 0, 0); |
nuclear@1 | 18 glVertex3f(pos.x, pos.y, pos.z); |
nuclear@1 | 19 glColor3f(1, 1, 1); |
nuclear@1 | 20 glEnd(); |
nuclear@1 | 21 |
nuclear@0 | 22 glMatrixMode(GL_MODELVIEW); |
nuclear@0 | 23 glPushMatrix(); |
nuclear@0 | 24 |
nuclear@0 | 25 glGetFloatv(GL_MODELVIEW_MATRIX, xform); |
nuclear@0 | 26 xform[3] = xform[7] = xform[11] = xform[12] = xform[13] = xform[14] = 0.0f; |
nuclear@0 | 27 xform[15] = 1.0f; |
nuclear@0 | 28 |
nuclear@0 | 29 glLoadMatrixf(xform); |
nuclear@0 | 30 |
nuclear@0 | 31 glPushAttrib(GL_ENABLE_BIT); |
nuclear@0 | 32 glDisable(GL_LIGHTING); |
nuclear@0 | 33 |
nuclear@0 | 34 glDepthMask(0); |
nuclear@0 | 35 |
nuclear@0 | 36 glBegin(GL_QUADS); |
nuclear@0 | 37 glColor3f(1, 1, 1); |
nuclear@0 | 38 } |
nuclear@0 | 39 |
nuclear@0 | 40 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls) |
nuclear@0 | 41 { |
nuclear@0 | 42 float hsz = p->size / 2.0; |
nuclear@0 | 43 |
nuclear@0 | 44 glTexCoord2f(0, 0); |
nuclear@0 | 45 glVertex3f(p->pos.x - hsz, p->pos.y - hsz, p->pos.z); |
nuclear@0 | 46 |
nuclear@0 | 47 glTexCoord2f(1, 0); |
nuclear@0 | 48 glVertex3f(p->pos.x + hsz, p->pos.y - hsz, p->pos.z); |
nuclear@0 | 49 |
nuclear@0 | 50 glTexCoord2f(1, 1); |
nuclear@0 | 51 glVertex3f(p->pos.x + hsz, p->pos.y + hsz, p->pos.z); |
nuclear@0 | 52 |
nuclear@0 | 53 glTexCoord2f(0, 1); |
nuclear@0 | 54 glVertex3f(p->pos.x - hsz, p->pos.y + hsz, p->pos.z); |
nuclear@0 | 55 } |
nuclear@0 | 56 |
nuclear@0 | 57 void psys_gl_draw_end(struct psys_emitter *em, void *cls) |
nuclear@0 | 58 { |
nuclear@0 | 59 glEnd(); |
nuclear@0 | 60 |
nuclear@0 | 61 glDepthMask(1); |
nuclear@0 | 62 glPopAttrib(); |
nuclear@0 | 63 |
nuclear@0 | 64 glMatrixMode(GL_MODELVIEW); |
nuclear@0 | 65 glPopMatrix(); |
nuclear@0 | 66 } |