nuclear@0: #ifndef __APPLE__ nuclear@0: #include nuclear@0: #else nuclear@0: #include nuclear@0: #endif nuclear@0: nuclear@0: #include "psys_impl.h" nuclear@0: nuclear@0: void psys_gl_draw_start(struct psys_emitter *em, void *cls) nuclear@0: { nuclear@0: float xform[16]; nuclear@0: nuclear@0: glMatrixMode(GL_MODELVIEW); nuclear@0: glPushMatrix(); nuclear@0: nuclear@0: glGetFloatv(GL_MODELVIEW_MATRIX, xform); nuclear@0: xform[3] = xform[7] = xform[11] = xform[12] = xform[13] = xform[14] = 0.0f; nuclear@0: xform[15] = 1.0f; nuclear@0: nuclear@0: glLoadMatrixf(xform); nuclear@0: nuclear@0: glPushAttrib(GL_ENABLE_BIT); nuclear@0: glDisable(GL_LIGHTING); nuclear@0: nuclear@0: glDepthMask(0); nuclear@0: nuclear@0: glBegin(GL_QUADS); nuclear@0: glColor3f(1, 1, 1); nuclear@0: } nuclear@0: nuclear@0: void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls) nuclear@0: { nuclear@0: float hsz = p->size / 2.0; nuclear@0: nuclear@0: glTexCoord2f(0, 0); nuclear@0: glVertex3f(p->pos.x - hsz, p->pos.y - hsz, p->pos.z); nuclear@0: nuclear@0: glTexCoord2f(1, 0); nuclear@0: glVertex3f(p->pos.x + hsz, p->pos.y - hsz, p->pos.z); nuclear@0: nuclear@0: glTexCoord2f(1, 1); nuclear@0: glVertex3f(p->pos.x + hsz, p->pos.y + hsz, p->pos.z); nuclear@0: nuclear@0: glTexCoord2f(0, 1); nuclear@0: glVertex3f(p->pos.x - hsz, p->pos.y + hsz, p->pos.z); nuclear@0: } nuclear@0: nuclear@0: void psys_gl_draw_end(struct psys_emitter *em, void *cls) nuclear@0: { nuclear@0: glEnd(); nuclear@0: nuclear@0: glDepthMask(1); nuclear@0: glPopAttrib(); nuclear@0: nuclear@0: glMatrixMode(GL_MODELVIEW); nuclear@0: glPopMatrix(); nuclear@0: }