////////////////////////////////////////////////////////////
 /// <summary>
 /// Draw primitives defined by an array of vertices
 /// </summary>
 /// <param name="vertices">Pointer to the vertices</param>
 /// <param name="type">Type of primitives to draw</param>
 /// <param name="states">Render states to use for drawing</param>
 ////////////////////////////////////////////////////////////
 public void Draw(Vertex[] vertices, PrimitiveType type, RenderStates states)
 {
     Draw(vertices, 0, (uint)vertices.Length, type, states);
 }
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Draw primitives defined by a sub-array of vertices
        /// </summary>
        /// <param name="vertices">Pointer to the vertices</param>
        /// <param name="start">Index of the first vertex to use in the array</param>
        /// <param name="count">Number of vertices to draw</param>
        /// <param name="type">Type of primitives to draw</param>
        /// <param name="states">Render states to use for drawing</param>
        ////////////////////////////////////////////////////////////
        public void Draw(Vertex[] vertices, uint start, uint count, PrimitiveType type, RenderStates states)
        {
            RenderStates.MarshalData marshaledStates = states.Marshal();

            unsafe
            {
                fixed(Vertex *vertexPtr = vertices)
                {
                    sfRenderWindow_drawPrimitives(CPointer, vertexPtr + start, count, type, ref marshaledStates);
                }
            }
        }
 ////////////////////////////////////////////////////////////
 /// <summary>
 /// Draw a drawable object to the render-target
 /// </summary>
 /// <param name="drawable">Object to draw</param>
 /// <param name="states">Render states to use for drawing</param>
 ////////////////////////////////////////////////////////////
 public void Draw(Drawable drawable, RenderStates states)
 {
     drawable.Draw(this, states);
 }