Масштабирование и вращение текстуры преобразования матрицы одновременно
Исходя из примеров графики я пытаюсь захватить поток с камеры в файл. Перед кодированием мне нужно применить некоторые преобразования:
- Повернуть изображение
Я могу сделать это:
Matrix.translateM(transform, 0, 0.5F, 0.5F, 0);
Matrix.rotateM(transform, 0, rotation, 0, 0, 1);
Matrix.translateM(transform, 0, -0.5F, -0.5F, 0);
- Применить шкалу и перевод
Изображение сжимается вдоль одной оси. Поэтому я должен масштабировать вдоль этой оси, а затем немного перевести, чтобы мы увидели среднюю часть. Опять же, я могу сделать это следующим образом:
float scaleX = mScaleX; // < 1 or == 1
float scaleY = mScaleY; // < 1 or == 1
float scaleTranslX = (1F - scaleX) / 2F;
float scaleTranslY = (1F - scaleY) / 2F;
Matrix.translateM(transform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(transform, 0, scaleX, scaleY, 1);
Перевод состоит в том, чтобы получить "центральную обрезку" в конечном результате, так как кодировщик будет захватывать только то, что нарисовано в данном окне просмотра.
Тем не менее, я потерял в объединении двух операций вместе. Я потратил несколько часов на это, и то, что я исследовал, не помогло. Кто-нибудь может понять это?