code: func (i *Image) appendDrawTrianglesHistory(image *Image, vertices []float32, indices []uint16, colorm *affine.ColorM, mode graphics.CompositeMode, filter graphics.Filter, address graphics.Address) {
  	if i.stale || i.volatile || i.screen {
  		return
  	}
  	// TODO: Would it be possible to merge draw image history items?
  	const maxDrawTrianglesHistoryNum = 1024
  	if len(i.drawTrianglesHistory)+1 > maxDrawTrianglesHistoryNum {
  		i.makeStale()
  		return
  	}
  	// All images must be resolved and not stale each after frame.
  	// So we don't have to care if image is stale or not here.
  	item := &drawTrianglesHistoryItem{
  		image:    image,
  		vertices: vertices,
  		indices:  indices,
  		colorm:   colorm,
  		mode:     mode,
  		filter:   filter,
  		address:  address,
  	}
  	i.drawTrianglesHistory = append(i.drawTrianglesHistory, item)
  }
docs: // appendDrawTrianglesHistory appends a draw-image history item to the image.