Example #1
0
        public void Draw()
        {
            bool isTexture = GL.IsEnabled(EnableCap.Texture2D);

            //GL.Enable(EnableCap.DepthTest);
            GL.Disable(EnableCap.Texture2D);

            int minLayer;
            int maxLayer;
            {
                if (DrawParts.Count > 0)
                {
                    minLayer = DrawParts[0].Layer;
                    maxLayer = minLayer;
                }
                else
                {
                    minLayer = 0; maxLayer = 0;
                }
                for (int idp = 1; idp < DrawParts.Count; idp++)
                {
                    int layer = DrawParts[idp].Layer;
                    minLayer = (layer < minLayer) ? layer : minLayer;
                    maxLayer = (layer > maxLayer) ? layer : maxLayer;
                }
            }
            double layerHeight = 1.0 / (maxLayer - minLayer + 1);

            GL.LineWidth(1);
            GL.Begin(PrimitiveType.Lines);
            for (int idp = 0; idp < DrawParts.Count; idp++)
            {
                VectorFieldDrawPart dp = DrawParts[idp];
                int    layer           = dp.Layer;
                double height          = (layer - minLayer) * layerHeight;
                GL.Translate(0, 0, +height);
                dp.DrawElements();
                GL.Translate(0, 0, -height);
            }
            GL.End();

            if (isTexture)
            {
                GL.Enable(EnableCap.Texture2D);
            }
        }