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); } }