public void Init() { if (IsInitialized) { //throw new Exception("Mesh is already initialized"); //Console.WriteLine("skipping Mesh init() because it was already initialized"); return; } vao = new Vertexarray(); vbo = new Buffer <vertex>(); vbo.bufferdata(vertices.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw); ebo = new Buffer <uint>(); ebo.bufferdata(indices.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo); /* * vao.attrib_pointer(0, 3, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, 0); * vao.attrib_pointer(1, 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, sizeof(float) * 3); * vao.attrib_pointer(2, 3, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, sizeof(float) * 5); */ const int stride = sizeof(float) * 8; vao.attrib_pointer(0, AttribType.Vec3, stride, 0); vao.attrib_pointer(1, AttribType.Vec2, stride, sizeof(float) * 3); vao.attrib_pointer(2, AttribType.Vec3, stride, sizeof(float) * 5); }
static Graphics() { vbo = new Buffer <float>(); vbo.bufferdata(new float[] { -.5f, -.5f, 1, 0, -.5f, .5f, 0, 0, .5f, -.5f, 1, 1, .5f, .5f, 0, 1 }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw); ebo = new Buffer <uint>(); ebo.bufferdata(new uint[] { 0, 2, 1, 3, 1, 2 }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw); vao = new Vertexarray(); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo); vao.attrib_pointer(0, 4, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 4, 0); }
public Vao_vbo_ebo() { vao = new Vertexarray(); vbo = new Buffer <T>(); ebo = new Buffer <uint>(); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo); }
public void render() { vao.bind(); int offset = 0; foreach (var item in entries) { item.Key.apply(); Vertexarray.draw_elements(OpenTK.Graphics.OpenGL4.PrimitiveType.Triangles, item.Value, ElementsType.UnsignedInt, offset * sizeof(uint)); offset += item.Value; } Vertexarray.unbind(); }
static Skybox() { boxvao = new Vertexarray(); vbo = Glow.Buffer.create(new float[] { -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f }); boxvao.set_buffer(BufferTarget.ArrayBuffer, vbo); boxvao.attrib_pointer(0, 3, VertexAttribPointerType.Float, false, sizeof(float) * 3, 0); //boxvao.set_attribute_pointer(0, AttribType.Vec3, vbo, vec3.bytesize); }
public AdvMesh() { // init buffers: vertex_buffer = Glow.Buffer.create(this.vertices.ToArray()); element_buffer = Glow.Buffer.create(this.indices.ToArray()); // setup vao: vao = new Vertexarray(); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vertex_buffer); vao.attrib_pointer(POSITION, AttribType.Vec3, vertex.bytesize, 0); vao.attrib_pointer(TEXCOORD, AttribType.Vec2, vertex.bytesize, vec3.bytesize); vao.attrib_pointer(NORMAL, AttribType.Vec3, vertex.bytesize, vec3.bytesize + vec2.bytesize); vao.set_elementbuffer(element_buffer); }
private static void InitializeScreenQuad() { imageEffectQuadVBO = new Buffer <float>(); imageEffectQuadVBO.bufferdata(new float[] { -1f, -1f, 1f, -1f, -1f, 1f, 1f, 1f }, BufferUsageHint.StaticDraw); imageEffectQuadEBO = new Buffer <uint>(); imageEffectQuadEBO.bufferdata(new uint[] { 0, 1, 2, 3, 2, 1 }, BufferUsageHint.StaticDraw); imageEffectQuadVAO = new Vertexarray(); imageEffectQuadVAO.set_buffer(BufferTarget.ArrayBuffer, imageEffectQuadVBO); imageEffectQuadVAO.set_buffer(BufferTarget.ElementArrayBuffer, imageEffectQuadEBO); imageEffectQuadVAO.attrib_pointer(0, 2, VertexAttribPointerType.Float, false, sizeof(float) * 2, 0); }
public Textbox() { vao = new Vertexarray(); vbo = new Buffer <vec4>(); ebo = new Buffer <uint>(); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo); vao.set_buffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo); vao.attrib_pointer(Canvas.rectShader.get_attrib_location("posuv"), 4, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 4, 0); Game.window.KeyPress += Window_KeyPress; Game.window.KeyDown += Window_KeyDown; base.OnFocus += TextBox_OnFocus; base.OnUnfocus += TextBox_OnUnfocus; this.initCursor(); }
static void Main(string[] args) { GameWindow w = new GameWindow(); ShaderProgram sp = null; Vertexarray vao = null; Buffer <float> vbo = null; Buffer <uint> ebo = null; Texture2D texture = null; w.Load += (s, a) => { GL.ClearColor(0, 0, 0, 1); // setting up shader var frag = new Shader(ShaderType.FragmentShader, File.ReadAllText("frag.glsl")); var vert = new Shader(ShaderType.VertexShader, File.ReadAllText("vert.glsl")); sp = new ShaderProgram(frag, vert); frag.Dispose(); vert.Dispose(); // setting up buffers vbo = new Buffer <float>(); vbo.bufferdata(new float[] { -.5f, -.5f, 0, -0.5f, -0.5f, 0, .5f, 0, .5f, 1.5f, .5f, -.5f, 0, 1.5f, -0.5f }, BufferUsageHint.StaticDraw); ebo = new Buffer <uint>(); ebo.bufferdata(new uint[] { 0, 1, 2 }, BufferUsageHint.StaticDraw); // setting up vao vao = new Vertexarray(); vao.set_buffer(BufferTarget.ArrayBuffer, vbo); vao.set_buffer(BufferTarget.ElementArrayBuffer, ebo); vao.attrib_pointer(sp.getAttribLocation("pos"), 3, VertexAttribPointerType.Float, false, sizeof(float) * 5, 0); vao.attrib_pointer(sp.getAttribLocation("uv"), 2, VertexAttribPointerType.Float, false, sizeof(float) * 5, sizeof(float) * 3); // setting up texture /* * var r = new Random(); * var pixels = new Color32bit[16, 16]; * for (int x = 0; x < 16; x++) { * for (int y = 0; y < 16; y++) { * if (x == 0 || y == 0 || x == 15 || y == 15) { * pixels[x, y] = new Color32bit(1.0f); * } else { * pixels[x, y] = new Color32bit((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble()); * } * } * } * texture = new Texture2D(pixels) { * Filter = Filter.Nearest, * };*/ var sw = new Stopwatch(); sw.Start(); texture = new Texture2D("Skybox_back.png"); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); foreach (var item in GLObject.Instances) { Console.WriteLine(item); } }; w.RenderFrame += (s, e) => { GL.Clear(ClearBufferMask.ColorBufferBit); sp.use(); texture.bind(TextureUnit.Texture0); //vao.DrawArrays(PrimitiveType.Triangles, 0, 9); vao.draw_elements(PrimitiveType.Triangles, 3, DrawElementsType.UnsignedInt); GL.Flush(); w.SwapBuffers(); }; var r = new Random(); w.UpdateFrame += (s, e) => { //texture.pixels[r.Next(texture.width), r.Next(texture.height)] = new color((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble()); var h = r.Next(texture.height); for (int i = 0; i < texture.width; i++) { texture.pixels[i, h] = new color(1); } texture.apply(); }; w.Resize += (s, e) => { GL.Viewport(0, 0, w.Width, w.Height); }; w.Run(); }