Стрижка спрайтов в Directx

Когда я срезаю спрайт в Directx 11, он показывает это

*******     *******      <= fixed
*     *  =>  *     *
*******       *******

Вот не тот результат, который я хочу

Что я хочу это

*******       *******
*     *  =>  *     *
*******     *******      <= fixed

PS. Я использую XMMatrixOrthographicOffCenterLH для настройки камеры

3

Решение

Сдвиговое преобразование в основном следующее: для входной позиции (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)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]