Exemple #1
0
        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();
        }
Exemple #2
0
        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);
            }
        }