libpsys

view src/psys_gl.c @ 0:1c8eb90a6989

initial commit
author John Tsiombikas <nuclear@mutantstargoat.com>
date Sat, 24 Sep 2011 07:22:07 +0300
parents
children 874a942853ad
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 glMatrixMode(GL_MODELVIEW);
14 glPushMatrix();
16 glGetFloatv(GL_MODELVIEW_MATRIX, xform);
17 xform[3] = xform[7] = xform[11] = xform[12] = xform[13] = xform[14] = 0.0f;
18 xform[15] = 1.0f;
20 glLoadMatrixf(xform);
22 glPushAttrib(GL_ENABLE_BIT);
23 glDisable(GL_LIGHTING);
25 glDepthMask(0);
27 glBegin(GL_QUADS);
28 glColor3f(1, 1, 1);
29 }
31 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls)
32 {
33 float hsz = p->size / 2.0;
35 glTexCoord2f(0, 0);
36 glVertex3f(p->pos.x - hsz, p->pos.y - hsz, p->pos.z);
38 glTexCoord2f(1, 0);
39 glVertex3f(p->pos.x + hsz, p->pos.y - hsz, p->pos.z);
41 glTexCoord2f(1, 1);
42 glVertex3f(p->pos.x + hsz, p->pos.y + hsz, p->pos.z);
44 glTexCoord2f(0, 1);
45 glVertex3f(p->pos.x - hsz, p->pos.y + hsz, p->pos.z);
46 }
48 void psys_gl_draw_end(struct psys_emitter *em, void *cls)
49 {
50 glEnd();
52 glDepthMask(1);
53 glPopAttrib();
55 glMatrixMode(GL_MODELVIEW);
56 glPopMatrix();
57 }