libpsys

view 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
line source
1 #ifndef __APPLE__
2 #include <GL/gl.h>
3 #else
4 #include <OpenGL/gl.h>
5 #endif
7 #include "psys_impl.h"
9 void psys_gl_draw_start(struct psys_emitter *em, void *cls)
10 {
11 float xform[16];
13 vec3_t pos = psys_get_pos(em);
15 glPointSize(5.0);
16 glBegin(GL_POINTS);
17 glColor3f(1, 0, 0);
18 glVertex3f(pos.x, pos.y, pos.z);
19 glColor3f(1, 1, 1);
20 glEnd();
22 glMatrixMode(GL_MODELVIEW);
23 glPushMatrix();
25 glGetFloatv(GL_MODELVIEW_MATRIX, xform);
26 xform[3] = xform[7] = xform[11] = xform[12] = xform[13] = xform[14] = 0.0f;
27 xform[15] = 1.0f;
29 glLoadMatrixf(xform);
31 glPushAttrib(GL_ENABLE_BIT);
32 glDisable(GL_LIGHTING);
34 glDepthMask(0);
36 glBegin(GL_QUADS);
37 glColor3f(1, 1, 1);
38 }
40 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls)
41 {
42 float hsz = p->size / 2.0;
44 glTexCoord2f(0, 0);
45 glVertex3f(p->pos.x - hsz, p->pos.y - hsz, p->pos.z);
47 glTexCoord2f(1, 0);
48 glVertex3f(p->pos.x + hsz, p->pos.y - hsz, p->pos.z);
50 glTexCoord2f(1, 1);
51 glVertex3f(p->pos.x + hsz, p->pos.y + hsz, p->pos.z);
53 glTexCoord2f(0, 1);
54 glVertex3f(p->pos.x - hsz, p->pos.y + hsz, p->pos.z);
55 }
57 void psys_gl_draw_end(struct psys_emitter *em, void *cls)
58 {
59 glEnd();
61 glDepthMask(1);
62 glPopAttrib();
64 glMatrixMode(GL_MODELVIEW);
65 glPopMatrix();
66 }