code: func (q *commandQueue) EnqueueDrawTrianglesCommand(dst, src *Image, vertices []float32, indices []uint16, color *affine.ColorM, mode graphics.CompositeMode, filter graphics.Filter, address graphics.Address) {
  	if len(indices) > graphics.IndicesNum {
  		panic(fmt.Sprintf("graphicscommand: len(indices) must be <= graphics.IndicesNum but not at EnqueueDrawTrianglesCommand: len(indices): %d, graphics.IndicesNum: %d", len(indices), graphics.IndicesNum))
  	}
  
  	split := false
  	if q.tmpNumIndices+len(indices) > graphics.IndicesNum {
  		q.tmpNumIndices = 0
  		q.nextIndex = 0
  		split = true
  	}
  
  	q.appendVertices(vertices)
  	q.appendIndices(indices, uint16(q.nextIndex))
  	q.nextIndex += len(vertices) / graphics.VertexFloatNum
  	q.tmpNumIndices += len(indices)
  
  	// TODO: If dst is the screen, reorder the command to be the last.
  	q.doEnqueueDrawTrianglesCommand(dst, src, len(vertices), len(indices), color, mode, filter, address, split)
  }
docs: // EnqueueDrawTrianglesCommand enqueues a drawing-image command.