Название: Прокрутка и область рисования Отправлено: Sahsa от Октябрь 31, 2015, 20:16 1) как в opengl ограничить область рисования?
2) как сделать скрул бар для opengl. Отрысовка происходит в отдельном классе и создается GLWindow и все это запихиваается в QDockWidget. Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 02, 2015, 10:03 1) В opengl область рисования и так ограничена по каждой координате [-1.0..1.0]. Всё, что лежит за пределами этой области не прорисовывается. Вы же управляете преобразованием верши с помощью 3х матриц: проецирования, представления и viewport.
2) QScrollBar либо рисовать прямо в gl. При прокрутке модифицировать матрицу представления. Название: Re: Прокрутка и область рисования Отправлено: Sahsa от Ноябрь 02, 2015, 10:20 А можно более подробно про скроллинг?)
Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 02, 2015, 14:34 Поясните, что за скролл вам нужен. Я вижу 2 варианта:
1) QGLWidget не влезает в QDockWidget и вам необходимо скролить именно виджет 2) Вам нужно скролить изображение, которое рисует QGLWidget Название: Re: Прокрутка и область рисования Отправлено: Sahsa от Ноябрь 04, 2015, 09:57 в QDockWidget добавляем GLWindows и в окне QDockWidget нужны полосы прокрутки, для быстрого перемещения
Название: Re: Прокрутка и область рисования Отправлено: Igors от Ноябрь 05, 2015, 07:41 Собственно скроллинг делается добавлением смещения в матрицу OpenGL (обычно MODEL_VIEW_MATRIX) которая заполняется при каждом рисовании. Скроллбары - вот не знаю можно ли их добавить прямо в GLWindow. Во всяком случае QScrollArea в доке и GLWindow как виджет QScrollArea работать будет.
Вообще здесь проще показать на тестовом примере чем словами. Выкладывайте (в zip), но учтите - версия Qt пятерка (QOpenGLWindow) Название: Re: Прокрутка и область рисования Отправлено: Sahsa от Ноябрь 09, 2015, 09:59 создается клас
class GLWindows : public QGLWidget в нем переопределяются методы void initializeGL(); void resizeGL(int nWidth, int nHeight); void paintGL(); и у меня не получается добавить скролинг при помощи ползунков Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 10, 2015, 07:44 Вообще, скорее всего, всё зависит от реализации вашего метода paintGL. Вам необходимо определиться, как значения скролбара будут переводиться в координаты OpenGL.
Если вы реализовывали свой класс таким образом, что в initializeGL() не происходит операций с матрицами, в resizeGL() происходит модифицирование только матрицы проекции, а в paintGL() идёт работа с матрицей моделирования + рисование, тогда: Берём, после приведения матрицы модели к единичной вставляем смещение её на то расстояние, которое вам необходимо. Для этого необходимо вызвать метод glTranslate, либо, если вы работаете с классом матриц QMatrix4x4::translate Название: Re: Прокрутка и область рисования Отправлено: Sahsa от Ноябрь 10, 2015, 09:10 а можно хоть какой нить пример, так как с openGL пока не очень дружу
Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 10, 2015, 09:15 Думаю, тут (http://www.prog.org.ru/topic_27475_0.html) вы для себя что-нибудь найдёте
Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 10, 2015, 09:18 Перемещение конкретно здесь (http://www.prog.org.ru/index.php?topic=27475.msg199394#msg199394)
Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 10, 2015, 09:30 Перемещение конкретно здесь (http://www.prog.org.ru/index.php?topic=27475.msg199394#msg199394) Правда, тут используется 2D и не используются матрицы. Может вам и не подойдет.Вообще, с вашей стороны нужно больше кода. дайте реализацию этих 3х методов. Название: Re: Прокрутка и область рисования Отправлено: __Heaven__ от Ноябрь 10, 2015, 09:36 Я учился по книге: http://www.ozon.ru/context/detail/id/2639015/ (http://www.ozon.ru/context/detail/id/2639015/)
Первые 4 главы дадут понимание вашей задачи. Название: Re: Прокрутка и область рисования Отправлено: Sahsa от Ноябрь 10, 2015, 09:45 спасибо, буду смотреть, возникнут вопросы напишу.
|