Если это перспективное преобразование, вы сможете указать матрицу преобразования 4x4, которая соответствует четырем углам.
Рассчитать эту матрицу, а затем применить каждый пиксель к результирующему изображению в матрице, что приведет к«сопоставленный» пиксель.Обратите внимание, что этот «сопоставленный» пиксель, скорее всего, будет лежать между двумя или даже четырьмя пикселями.В этом случае используйте ваш любимый алгоритм интерполяции (например, билинейный, бикубический), чтобы получить интерполированный цвет.
Это действительно единственный способ сделать это и не может быть сделан быстрее.Если эта функция имеет решающее значение, и вам абсолютно нужно, чтобы она была быстрой, то вам нужно перенести задачу в графический процессор.Например, вы можете вызвать библиотеку DirectX для применения преобразования перспективы к текстуре.Это может сделать его чрезвычайно быстрым, даже когда нет графического процессора, поскольку библиотека DirectX использует инструкции SIMD для ускорения матричных вычислений и цветовой интерполяции.