示例#1
0
        /// <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);

            }
        }