Я хочу по горизонтали инвертировать кадры, поступающие на Surface
объект, сделанный из TextureView
. Что я могу сделать, это установить матрицу преобразования для этого экземпляра TextureView
, тогда как I postScale
на -1 для x
и 1 для y
(оставить без изменений), а затем postTranslate
dx
на полном ширину вида и оставить dy
без изменений (0F
).
Но проблема возникает, когда я поворачиваю свое устройство на 90 градусов (по горизонтали) при выключенном повороте экрана: изображение поворачивается на 180 градусов, и это, конечно, имеет смысл, поскольку оси x
и y
не изменилось.
Как это можно решить? Можно ли поиграть с матрицей перевода таким образом, чтобы решить эту проблему? Или может быть с инструментами OpenGL ES?
P.S .: как ни странно, но вращение выполняется в два раза в два раза больше, чем само вращение устройства, например когда я поворачиваю устройство на 90 градусов - предварительный просмотр поворачивается на 180.
P.S.S .: Я пытался инвертировать предварительный просмотр, используя метод Matrix
setPolyToPoly
... и получил точно такой же результат.
P.S.S .: Кроме того, вы играете с open gl, чтобы достичь цели, используя простые преобразования масштаба и поворота для модели и проекции, и получите точно такой же результат!
Обновление:
Это скриншоты, которые описывают поведение фронтальной камеры по умолчанию - HAL по умолчанию применяет инверсию кадров, и я не могу прочитать текст; все равно, поворачиваю ли я устройство или нет - «ориентация кадра» не меняется:
И это скриншоты, когда я применяю, например, Matrix.scaleM(modelMatrix, 0, -1F, 1F, 1F);
и затем применяю эту матрицу к каждой координате, которая входит в вершинный шейдер, так что теперь я могу читать текст, потому что я сам применил инверсию, так что инверсия HAL с моей собственной инверсией приведет к отсутствию инверсии, но когда я поверну свое устройство (с изменением ориентации устройства при отключенном вращении, конечно, и в этом суть) - я увижу себя перевернутым, и это, конечно, имеет смысл, потому что Система координат устройства не изменится. Тем не менее, я хочу иметь возможность избежать поворота изображения каким-либо образом при повороте самого устройства (как в режиме по умолчанию - независимо от того, повернуто устройство или нет - изображение предварительного просмотра просто «не волнует») и по-прежнему иметь возможность читать текст (я имею в виду, как в портретном режиме).