public VertexArray(Shader shader, VertexList vertexes, IList <uint> idxs = null, PrimitiveType prim = PrimitiveType.Triangles, BufferUsageHint usage = BufferUsageHint.StaticDraw) { Log.Assert(shader != null); Log.Assert(vertexes != null); //Vertexes = vertexes; Layout = vertexes.Layout; indices = idxs; usageHint = usage; primitive = prim; NumberOfIndices = indices.Count; vao = GL.GenVertexArray(); GL.BindVertexArray(vao); buffer = GL.GenBuffer(); GL.BindBuffer(BufferTarget.ArrayBuffer, buffer); indexBuffer = GL.GenBuffer(); GL.BindBuffer(BufferTarget.ElementArrayBuffer, indexBuffer); AddVertexesToBuffer(vertexes); AddIndicesToBuffer(indices); SetupVertexPointers(shader, vertexes); // Unbinding the buffer *does not* alter the state of the vertex array object. // The association between buffer and vao is made on the GL.VertexAttribPointer() call. GL.BindBuffer(BufferTarget.ArrayBuffer, 0); // Except for ElementArrayBuffer's, OF COURSE.(?) //GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0); GL.BindVertexArray(0); }
public VertexList(VertexLayout layout) { Layout = layout; Vertexes = new List <float>(); }