public AxisPreview(KauWindow window, int size = 60, int border = 25) { this.size = size; this.border = border; Events.WindowResize += OnResize; OnResize(window); using (var loader = new KauRock.Loaders.Shader()) { loader.AddRaw("axis-preview.vert", vertShader, ShaderType.VertexShader); loader.AddRaw("axis-preview.frag", fragShader, ShaderType.FragmentShader); shader = loader.Load("axis-preview.vert", "axis-preview.frag"); } vertexArray = GL.GenVertexArray(); vertexBuffer = GL.GenBuffer(); elementBuffer = GL.GenBuffer(); GL.BindVertexArray(vertexArray); GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBuffer); GL.BufferData(BufferTarget.ArrayBuffer, sizeof(float) * verts.Length, verts, BufferUsageHint.StaticDraw); GL.BindBuffer(BufferTarget.ElementArrayBuffer, elementBuffer); GL.BufferData(BufferTarget.ElementArrayBuffer, sizeof(uint) * tris.Length, tris, BufferUsageHint.StaticDraw); int stride = sizeof(float) * 6; GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, stride, 0); GL.EnableVertexAttribArray(0); GL.VertexAttribPointer(1, 3, VertexAttribPointerType.Float, false, stride, stride / 2); GL.EnableVertexAttribArray(1); }
private void OnResize(KauWindow window) { scale = new Vector3(size / (float)window.Width, size / (float)window.Height, 1f); translation = new Vector3( (window.Width - (size + border)) / ((float)window.Width), (window.Height - (size + border)) / ((float)window.Height), 0); }