Когда я срезаю спрайт в Directx 11, он показывает это
******* ******* <= fixed
* * => * *
******* *******
Вот не тот результат, который я хочу
Что я хочу это
******* *******
* * => * *
******* ******* <= fixed
PS. Я использую XMMatrixOrthographicOffCenterLH для настройки камеры
Сдвиговое преобразование в основном следующее: для входной позиции (p.x, p.y) добавьте часть y-координаты к x-координате. Таким образом, результат: (p.x + s * p.y, p.y).
Имея это в виду, вы должны делать то, что предложил yiding. Сначала примените преобразование, которое выравнивает прямоугольник, сделайте сдвиг и отмените первое преобразование.
Самый простой способ — это перевести spriteHeight
вверх и используйте отрицательный коэффициент сдвига. Таким образом, преобразование будет:
Translate(0, -spriteHeight, 0) * shearx(-s) * Translate(0, spriteHeight, 0)
Других решений пока нет …