In this chapter, we covered the complicated issue of BSP trees, including building 2D BSP trees, drawing polygons front to back, drawing 3D objects, and loading maps from a file. Along the way, we covered topics such as the basics of binary trees, line intersections, "thick" lines, and how to eliminate T-junction gaps. At this point, you have a pretty cool 3D rendering engine and can move on to some other game-programming topics, such as collision detection, path finding, and AI.