public VertexBuffer(float[] data, BufferUsageHint usage, VertexBufferLayout layout) { Layout = layout ?? throw new ArgumentNullException(nameof(layout)); Id = GL.GenBuffer(); Logger.Trace("Generated buffer: {0}", Id); Bind(); GL.BufferData(BufferTarget.ArrayBuffer, data.Length * sizeof(float), data, usage); Logger.Trace("Set buffer data: {1} bytes ({0})", usage, data.Length * sizeof(float)); Unbind(); }
private void UpdateVAO(VertexBufferLayout vbl) { IReadOnlyList <VertexBufferItem> items = vbl.Items; int offset = 0; for (int index = 0; index < items.Count; index++) { VertexBufferItem item = items[index]; GL.EnableVertexAttribArray(index); GL.VertexAttribPointer(index, item.Count, item.Type, item.Normalized, vbl.Stride, offset); offset += item.Count * VertexBufferLayout.GetTypeSize(item.Type); } }