void CParticleSystem::Render(const vec3_t& side, const vec3_t& up, const vec3_t& dir) { glBindTexture(GL_TEXTURE_2D, m_texture); glBegin(GL_QUADS); // use vbos instead of this std::vector<particle_t>::const_iterator iter; for(iter = m_particles.begin();iter != m_particles.end(); ++iter) { if(iter->lifetime < 0.0f) continue; const vec3_t X = iter->size*0.5f*side; const vec3_t Y = iter->size*0.5f*up; const vec3_t Q1 = X + Y + iter->origin; const vec3_t Q2 = -X + Y + iter->origin; const vec3_t Q3 = -X - Y + iter->origin; const vec3_t Q4 = X - Y + iter->origin; glColor4f(iter->color.x, iter->color.y, iter->color.z, iter->alpha); glTexCoord2f(1.0f, 1.0f); glVertex3fv(Q1.GetPointer()); glTexCoord2f(0.0f, 1.0f); glVertex3fv(Q2.GetPointer()); glTexCoord2f(0.0f, 0.0f); glVertex3fv(Q3.GetPointer()); glTexCoord2f(1.0f, 0.0f); glVertex3fv(Q4.GetPointer()); } glEnd(); }