/// <summary> /// Renders a given explosion. The explosion takes on the color given in the parameter. /// </summary> private static void RenderExplosion(byte[] color, Explosion explosion) { List<float[]> streams = explosion.RenderStreams(); foreach (float[] stream in streams) { float fromOrigin = stream[3] / 2; GL.LoadIdentity(); GL.Translate(stream[0], stream[1], 0.0f); GL.Rotate(stream[2], 0.0f, 0.0f, 1.0f); // texture GL.Color3(color); GL.BindTexture(TextureTarget.Texture2D, explosionTex); GL.Begin(PrimitiveType.Quads); GL.TexCoord2(0, 0); GL.Vertex2(-fromOrigin, fromOrigin); GL.TexCoord2(1, 0); GL.Vertex2(fromOrigin, fromOrigin); GL.TexCoord2(1, 1); GL.Vertex2(fromOrigin, -fromOrigin); GL.TexCoord2(0, 1); GL.Vertex2(-fromOrigin, -fromOrigin); GL.End(); GL.BindTexture(TextureTarget.Texture2D, 0); } }