Название: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 11, 2020, 16:38 Всем привет.
Для embeded у котором монитор повернут на 90 градосов надо перевернуть приложение. Внутренний класс Qt QQuickWIndow имеется метод renderSceneGraph и вот там есть такой кусочек кода Код: if (renderTargetId) { И вот вместо одной строки Код: renderer->setProjectionMatrixToRect(QRectF(QPoint(0, 0), logicalSize), flipY); нужно написать код для того чтобы приложение было повернуто. Может кто подсказать как это правильно написать? Заранее благодарю. Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 12, 2020, 19:56 Как оказалось это называется rotation)
вот теперь понять бы как такое написать Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: kambala от Январь 12, 2020, 22:47 немножко пальцем в небо:
Код
Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: DarkHobbit от Январь 14, 2020, 09:09 Цитировать 90 зрадусов Про зраду и перемогу уже пошутили? (Извиняюсь, не удержался.)kambala: интересно. Был немножко удивлён, что у QMatrix4x4::rotate() угол задаётся в градусах, а не радианах. Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 14, 2020, 12:02 Цитировать 90 зрадусов Про зраду и перемогу уже пошутили? (Извиняюсь, не удержался.)kambala: интересно. Был немножко удивлён, что у QMatrix4x4::rotate() угол задаётся в градусах, а не радианах. Очепятолся, или это проблема? Или зацепиться за одну неправильную букву это ваше кредо? Лучше бы раз знаете как это сделать посоветовали, а не писать вот это все. Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 14, 2020, 17:15 немножко пальцем в небо: Код
Ваш совет не помог, куда то окно пропало вообще) Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: kambala от Январь 14, 2020, 17:35 значит, поворот был вокруг не того вектора. Наверное, надо использовать центр прямоугольника.
Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: Igors от Январь 14, 2020, 17:49 Ваш совет не помог, куда то окно пропало вообще) Ну идея-то могла быть верной. Я бы попробовал Код И посмотрел куда крутит (поворот вокруг Z выглядит наиболее логичным). И конечно распечатать матрицу (до и после) , может в ней параметры перспективы, тогда крутить нельзя Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 14, 2020, 19:34 Ваш совет не помог, куда то окно пропало вообще) Ну идея-то могла быть верной. Я бы попробовал Код И посмотрел куда крутит (поворот вокруг Z выглядит наиболее логичным). И конечно распечатать матрицу (до и после) , может в ней параметры перспективы, тогда крутить нельзя Я вот сейчас глянул и поулчается что поворот идет во круг X Y, а как крутить правильно во круг Z?) просто тут же в функции только два первых передаются. Или я чет путаю в этом. И сразу вопрос, а если из функции просто вытащить это добро Код: QMatrix4x4 matrix; и не нужно ли случайно тогда менять местами высоты X и Y? Спасибо. Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: kambala от Январь 14, 2020, 19:40 поворот вокруг Z выглядит наиболее логичным и правда :) я о точке почему-то думал, а ведь надо было о векторе, смотрящем «на нас». 0,0,1 должен подойти.Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: Igors от Январь 15, 2020, 10:21 Я вот сейчас глянул и поулчается что поворот идет во круг X Y, а как крутить правильно во круг Z?) Задать ось поворота (0, 0, 1)просто тут же в функции только два первых передаются. Или я чет путаю в этом. Параметров 4 (угол + xyz), последний (z) по default 0И сразу вопрос, а если из функции просто вытащить это добро Сначала поверните на небольшой угол и покажите скрыншот что получилось, а там уже и станет ясно менять высоты или как... и не нужно ли случайно тогда менять местами высоты X и Y? я о точке почему-то думал, а ведь надо было о векторе, смотрящем «на нас». 0,0,1 должен подойти. Точку тоже никто не отменял :)Название: Re: Перевернуть приложение на 90 зрадусов Отправлено: SektorCT от Январь 15, 2020, 12:38 Я вот сейчас глянул и поулчается что поворот идет во круг X Y, а как крутить правильно во круг Z?) Задать ось поворота (0, 0, 1)просто тут же в функции только два первых передаются. Или я чет путаю в этом. Параметров 4 (угол + xyz), последний (z) по default 0И сразу вопрос, а если из функции просто вытащить это добро Сначала поверните на небольшой угол и покажите скрыншот что получилось, а там уже и станет ясно менять высоты или как... и не нужно ли случайно тогда менять местами высоты X и Y? я о точке почему-то думал, а ведь надо было о векторе, смотрящем «на нас». 0,0,1 должен подойти. Точку тоже никто не отменял :)В общем, первое что получилось обнаружить так это то что надо закоментить в файле qsgbatchrender.cpp в методе renderUnmergedBatch() вот такое добро Код: if (m_useDepthBuffer) { Дальеш я вытащил из метода setProjectionMatrixToRect() то что касалось высоты и ширины в методе ortho Код: QMatrix4x4 matrix; единственное мне кажется что что то с высотой и шириной надо мудрить. Пока не разобрался. |