public void SetVertexAttributeI(uint index, IBuffer buffer, VertexAttributeDimension dimension, VertexAttribIPointerType type, int stride, int offset, uint divisor = 0) { var newDesc = new VertexAttributeDescription { IsEnabled = true, SetFunction = All.Int, Dimension = dimension, Type = (int)type, Stride = stride, Offset = offset, Divisor = divisor, Buffer = buffer }; if (VertexAttributeDescription.Equals(ref vertexAttributes[index], ref newDesc)) { return; } context.Bindings.VertexArray.Set(this); if (!vertexAttributes[index].IsEnabled) { GL.EnableVertexAttribArray(index); } context.Bindings.Buffers.Array.Set(buffer); GL.VertexAttribIPointer(index, (int)dimension, (int)type, stride, (IntPtr)offset); if (vertexAttributes[index].Divisor != divisor) { GL.VertexAttribDivisor(index, divisor); } vertexAttributes[index] = newDesc; if (index >= enabledVertexAttributesRange) { enabledVertexAttributesRange = index + 1; } }
public static void VertexAttribIPointer(uint index, int size, VertexAttribIPointerType type, int stride, IntPtr pointer) { glVertexAttribIPointer deleg = BaseGraphicsContext.Current.Loader.Get<glVertexAttribIPointer>(); if (deleg != null) deleg(index, size, type, stride, pointer); }