Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using OpenTK;
- using OpenTK.Graphics;
- using OpenTK.Graphics.OpenGL;
- using OpenTK.Input;
- using System;
- namespace OpenTKTest
- {
- internal class Window : GameWindow
- {
- float[] vertices = {
- -0.5f, -0.5f, 0.0f, //Bottom-left vertex
- 0.5f, -0.5f, 0.0f, //Bottom-right vertex
- 0.0f, 0.5f, 0.0f //Top vertex
- };
- int VertexBufferObject;
- int VertexArrayObject;
- Shader shader;
- public Window(int width, int height, string title)
- : base(width, height, GraphicsMode.Default, title)
- {
- }
- protected override void OnLoad(EventArgs e)
- {
- GL.ClearColor(1.0f, 0.0f, 1.0f, 1.0f);
- shader = new Shader("..\\..\\vertex.vert", "..\\..\\fragment.frag");
- VertexBufferObject = GL.GenBuffer();
- // INITIAL DRAW - NO SUB
- GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
- GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.DynamicDraw);
- GL.VertexAttribPointer(shader.GetAttribLocation("aPosition"), 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), 0);
- GL.EnableVertexAttribArray(0);
- // DRAW EVERY RENDER
- VertexArrayObject = GL.GenVertexArray();
- GL.BindVertexArray(VertexArrayObject);
- GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
- GL.BufferSubData(BufferTarget.ArrayBuffer, (IntPtr)(0), vertices.Length * sizeof(float), vertices);
- //GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
- GL.VertexAttribPointer(shader.GetAttribLocation("aPosition"), 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), 0);
- GL.EnableVertexAttribArray(0);
- base.OnLoad(e);
- }
- protected override void OnRenderFrame(FrameEventArgs e)
- {
- GL.Clear(ClearBufferMask.ColorBufferBit);
- vertices[3] = 0.2f;
- /**
- shader.Use();
- GL.BindVertexArray(VertexArrayObject);
- GL.DrawArrays(PrimitiveType.Triangles, 0, 3);
- **/
- shader.Use();
- GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
- GL.BufferSubData(BufferTarget.ArrayBuffer, (IntPtr)(0), vertices.Length * sizeof(float), vertices);
- //GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
- GL.VertexAttribPointer(shader.GetAttribLocation("aPosition"), 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), 0);
- GL.EnableVertexAttribArray(0);
- GL.DrawArrays(PrimitiveType.Triangles, 0, 3);
- Context.SwapBuffers();
- base.OnRenderFrame(e);
- }
- protected override void OnUpdateFrame(FrameEventArgs e)
- {
- var input = Keyboard.GetState();
- if (input.IsKeyDown(Key.Escape))
- {
- Exit();
- }
- base.OnUpdateFrame(e);
- }
- protected override void OnResize(EventArgs e)
- {
- GL.Viewport(0, 0, Width, Height);
- base.OnResize(e);
- }
- protected override void OnUnload(EventArgs e)
- {
- GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
- GL.DeleteBuffer(VertexBufferObject);
- shader.Dispose();
- base.OnUnload(e);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement