Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
		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);
		}