/// <summary>
 /// Binds part of a buffer to the binding index utilized by the given transform feeedback varying.
 /// </summary>
 /// <remarks>
 /// If multiple parts of the same buffer are bound as transform feedback output targets they must not overlap.
 /// </remarks>
 /// <param name="transformOut">Specifies a transform feedback varying.</param>
 /// <param name="buffer">Specifies a buffer object to bind.</param>
 /// <param name="offset">Specifies the starting offset in bytes into the buffer object.</param>
 /// <param name="size">Specifies the amount of data in bytes that can be written to the buffer.</param>
 public void BindOutput <T>(TransformOut transformOut, Buffer <T> buffer, int offset, int size)
     where T : struct
 {
     AssertActive();
     GL.BindBufferRange(BufferRangeTarget.TransformFeedbackBuffer, transformOut.Index, buffer.Handle, (IntPtr)offset, (IntPtr)size);
 }
 /// <summary>
 /// Binds a buffer to the binding index utilized by the given transform feeedback varying.
 /// </summary>
 /// <param name="transformOut">Specifies a transform feedback varying.</param>
 /// <param name="buffer">Specifies a buffer object to bind.</param>
 public void BindOutput <T>(TransformOut transformOut, Buffer <T> buffer)
     where T : struct
 {
     AssertActive();
     GL.BindBufferBase(BufferRangeTarget.TransformFeedbackBuffer, transformOut.Index, buffer.Handle);
 }