---
name: "al_triangulate_polygon"
section: "3"
platform: "linux"
package: "allegro"
version: "5.2.11.3-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/al_triangulate_polygon"
---

# al\_triangulate\_polygon(3)

Allegro 5 API

## NAME

al\_triangulate\_polygon - Allegro 5 API

## SYNOPSIS

-

  ```
  #include <allegro5/allegro_primitives.h>
  bool al_triangulate_polygon(
     const float* vertices, size_t vertex_stride, const int* vertex_counts,
     void (*emit_triangle)(int, int, int, void*), void* userdata)
  ```

## DESCRIPTION

Divides a simple polygon into triangles, with zero or more other simple polygons subtracted from it - the holes. The holes cannot touch or intersect with the outline of the main polygon. Simple means the polygon does not have to be convex but must not be self-overlapping.

*Parameters:*

- •

  vertices - Interleaved array of (x, y) vertex coordinates for each of the polygons, including holes.

- •

  vertex\_stride - distance (in bytes) between successive pairs of vertices in the array.

- •

  vertex\_counts - Number of vertices for each polygon. The number of vertices in the main polygon is given by vertex\_counts\[0\] and must be at least three. Subsequent elements indicate the number of vertices in each hole. The array must be terminated with an element with value zero.

- •

  emit\_triangle - a function to be called for every set of three points that form a triangle. The function is passed the indices of the points in `vertices` and `userdata`.

- •

  userdata - arbitrary data to be passed to emit\_triangle.

## SINCE

5\.1.0

## SEE ALSO

[al\_draw\_filled\_polygon\_with\_holes(3)](/al_draw_filled_polygon_with_holes/3.md)
