Ejemplo n.º 1
0
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();
}