- glTranslatef(Particles[i].Position.X, Particles[i].Position.Y, Particles[i].Position.Z);
- glRotatef(Particles[i].Rotation, 0, 0, 1);
- glBindTexture(GL_TEXTURE_2D, Particles[i].Texture);
- glGetFloatv(GL_MODELVIEW_MATRIX, @ModelViewMatrix);
- VUp[0] := ModelViewMatrix[1, 0];
- VUp[1] := ModelViewMatrix[1, 1];
- VUp[2] := ModelViewMatrix[1, 2];
- VUp[3] := ModelViewMatrix[1, 3];
- VRight[0] := ModelViewMatrix[0, 0];
- VRight[1] := ModelViewMatrix[0, 1];
- VRight[2] := ModelViewMatrix[0, 2];
- VRight[3] := ModelViewMatrix[0, 3];
- Vector[0] := AddVectors(MakeVector3f(-VUp[0], -VUp[1], -VUp[2]), MakeVector3f(VRight[0], VRight[1], VRight[2]));
- Vector[1] := AddVectors(MakeVector3f(VUp[0], VUp[1], VUp[2]), MakeVector3f(VRight[0], VRight[1], VRight[2]));
- Vector[2] := SubVectors(MakeVector3f(VUp[0], VUp[1], VUp[2]), MakeVector3f(VRight[0], VRight[1], VRight[2]));
- Vector[3] := SubVectors(MakeVector3f(-VUp[0], -VUp[1], -VUp[2]), MakeVector3f(VRight[0], VRight[1], VRight[2]));
- Vector[0] := MultVectors(MakeVector3f(Vector[0].X, Vector[0].Y, Vector[0].Z), Particles[i].Size);
- Vector[1] := MultVectors(MakeVector3f(Vector[1].X, Vector[1].Y, Vector[1].Z), Particles[i].Size);
- Vector[2] := MultVectors(MakeVector3f(Vector[2].X, Vector[2].Y, Vector[2].Z), Particles[i].Size);
- Vector[3] := MultVectors(MakeVector3f(Vector[3].X, Vector[3].Y, Vector[3].Z), Particles[i].Size);
- glColor4f(Particles[i].Color.X, Particles[i].Color.Y, Particles[i].Color.Z, Particles[i].Opacity);
- glBegin(GL_QUADS);
- glTexCoord2f(0, 0);
- glVertex3fv(@Vector[0]);
- glTexCoord2f(1, 0);
- glVertex3fv(@Vector[1]);
- glTexCoord2f(1, 1);
- glVertex3fv(@Vector[2]);
- glTexCoord2f(0, 1);
- glVertex3fv(@Vector[3]);
- glEnd;
- glPopMatrix;