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 }