Чтобы выполнить перспективную проекцию, вам понадобятся две дополнительные вещи: точка перспективы (где находится «глаз») и плоскость проекции. При параллельной проекции точка / глаз и плоскость перспективы могут находиться на любом произвольном расстоянии от объектов (например, кубов). Но это немного сложнее с перспективной проекцией.
Как только вы установите свой глаз и плоскость проецирования, вам нужно будет перебирать кубы. В идеале вы должны перебирать их от самого дальнего к глазу до самого близкого - таким образом, более близкие кубы будут перезаписывать более дальние.
Для каждого куба определите расстояние от глаза для каждой точки. Затем для каждой грани (опять-таки в порядке уменьшения расстояния) рассчитайте проекционные точки для каждой вершины. Вы можете пропустить эти грани с закрытыми точками (самая дальняя вершина для каждого куба).
Чтобы рассчитать спроецированную точку для конкретной вершины, вам нужно найти точку на плоскости проекции. Эта точка будет там, где линия от глаза до вершины пересекает плоскость проекции. Это потребует некоторой математики, но не должно быть слишком сложным.