Culling ist das ermitteln von Polygonen die nicht gerendert werden müssen.
Es gibt verschiedene mathematische Ansätze. Als erstes werden alle Polygone aussortiert die hinter der Kamera sind. Dann geht es weiter mit folgenden Schritten:
1. Backface Culling
Aussortieren von Polygonen, von denen man nur die Rückseite sehen würde, weil sie von der Kamera/dem Betrachter wegschauen.

Die Draufsicht zeigt einen Raum mit Wänden. Das eingezeichnete Dreieck stellt das Frustum dar. Die Wände mit den roten Normalenvektoren zeigen von der Kamera weg und können ignoriert werden. Die blauen Normalenvektoren zeigen zur Kamera hin. Diese Polygone müssen gerendert werden.
Ein Polygon hat mathematisch gesehen keine Rückseite, wohl aber eine Ebene. Also lag es nahe, das Polygon, bzw. die Tile von der Ebene abzuleiten.2. Frustum Culling
Alle Polygone, die ganz oder teilweise in das Frustum hinein ragen, müssen gerendert werden. Es gilt:
- Mindestens ein Polygonpunkt liegt im Frustum
- Mindestens ein Polygonkante schneidet das Frustum oder
- Der Richtungsvektor des Frustums schneidet das Polygon
Hier greift der gleiche Trick wie beim Backface Culling: Die Seiten des Frustums sind Ebenen deren Normalenvektor nach innen zeigen:
Dann gilt:
- zu 1: Für mind. einen Polygonpunkt: Alle Ebenen des Frustums zeigen in Richtung des Punktes
- zu 2: Wenn eine Polygonkante eine Frustumsebene schneidet, müssen die Normalenvektoren der übrigen Frustumsebenen in Richtung des Schnittpunktes zeigen.
- zu 3: Hier wird auf eine Ray-Plane Intersection getestet
Fazit:
Mit Backface Culling und Frustum Culling wird die Zahl der zu zeichnenden Polygone schon recht gut eingeschränkt.
Das reicht aber nicht!
Ich habe dann noch den Portal-Ansatz implementiert