code: func (vs VertexSlice) grow(len int) VertexSlice {
  	if len <= vs.Cap() {
  		// capacity sufficient
  		return VertexSlice{
  			va: vs.va,
  			i:  vs.i,
  			j:  vs.i + len,
  		}
  	}
  
  	// grow the capacity
  	newCap := vs.Cap()
  	if newCap < 1024 {
  		newCap += newCap
  	} else {
  		newCap += newCap / 4
  	}
  	if newCap < len {
  		newCap = len
  	}
  	newVs := VertexSlice{
  		va: newVertexArray(vs.va.shader, newCap),
  		i:  0,
  		j:  len,
  	}
  	// preserve the original content
  	newVs.Begin()
  	newVs.Slice(0, vs.Len()).SetVertexData(vs.VertexData())
  	newVs.End()
  	return newVs
  }
docs: // grow returns supplied vs with length changed to len. Allocates new underlying vertex array if
  // necessary. The original content is preserved.