public void GenerateAxis(long height) { //generate y ticks data //Note - need allow different axis modes (count, data) var digits = (int)Math.Floor(Math.Log10(height)); var yTickSpacing = (int)Math.Pow(10, digits - 1); var max = (int)((((height / Math.Pow(10, digits)) + 1) * Math.Pow(10, digits)) / yTickSpacing); var data = new List <Vector2>(); for (var k = 0; k <= max; k++) { var tickScale = 0.5f; var y = k * yTickSpacing; if (k % 10 == 0) { tickScale = 1; } data.Add(new Vector2(-1, y)); data.Add(new Vector2(-1 - CanvasManager.TickSize * tickScale * CanvasManager.PixelSize.X, y)); } YTicksData = data.ToArray(); YTicks.BindData(YTicksData, BufferUsageHint.StaticDraw); }