Видите ли, перспективное наложение текстур является одной из основных функций любого 3D-движка. Вот почему они у нас есть. Распределение точек 3D-точек легко выполнить, просто закрасив полигоны цветами, даже z-буферизацией - все это довольно просто.
Перспективное наложение текстур идет немного дальше ... Оно предполагает наличие поставщика текстуры и преобразователя, и преобразователь должен разделить вершины (для реальной перспективы), затем применить аффинные преобразования к растровому изображению, нарисовать каждую из них ... Это все сложно поддерживать, если вы хотите сделать это в специальном (или даже на временной шкале ...) коде, который будет ОЧЕНЬ раздражающим. 3D-движки предоставляют гораздо больше функций (также неплохо было бы использовать затенение), и их ОЧЕНЬ легко обслуживать.
Я бы порекомендовал PaperVision 3D, хотя вам придется разделить вершины самостоятельно (или AFAIK PV3D не поддерживает это автоматически).
И прежде чем кто-либо скажет, что это было бы легко сделать в обычном цикле через BitmapData с выделением пикселей ... Это не так. Перспектива не линейная - и нелинейный цикл будет очень медленным.