Russian Qt Forum
Ноябрь 26, 2024, 12:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
QOpenGLWidget vs QGLWidget
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QOpenGLWidget vs QGLWidget (Прочитано 12269 раз)
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
QOpenGLWidget vs QGLWidget
«
:
Январь 28, 2015, 18:07 »
Привет, друзья!
Хотел узнать, кто уже использует QOpenGLWidget в своих проектах, как полёт?
Судя по документации мне его методы показались скудными. К примеру, мне не хватает setAutoSwap(bool) и swapBuffers().
Стоит ли перелезать или этот класс ещё сыроват?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #1 :
Январь 29, 2015, 07:37 »
Дружок, долбаюсь 3-ю неделю с этим
По какой-то таинственной причине экран не обновляется даже если рисую строго из paintGL. Вызов makeCurrent почему-то блокирует рисование. Проблемы с ложными (ненужными) перерисовками. И.т.п.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #2 :
Январь 29, 2015, 09:43 »
Цитата: Igors от Январь 29, 2015, 07:37
По какой-то таинственной причине экран не обновляется даже если рисую строго из paintGL.
Я получал такое же и на QGLWidget, хотел подписать оси координат. Но плюнул и сделал xyz трёхмерными.
А по идеи, какие преимущества я имею или должен иметь с этим новым классом?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #3 :
Январь 29, 2015, 09:58 »
Цитата: __Heaven__ от Январь 29, 2015, 09:43
А по идеи, какие преимущества я имею или должен иметь с этим новым классом?
QGLWidget (и вообще все QGLxxx) объявлено "legacy" начиная с 5.4. Проблемы есть и в старом и в новом - поэтому есть смысл возиться с новым. Напр есть приятная возможность обойтись без стандартных хедеров OpenGL, отличный флажок чтобы сделать все контексты шаред и др. Но будет ли все это бычить со старым QGLxxx - жалко тратить время на проверку
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #4 :
Январь 29, 2015, 10:49 »
Я ещё так понимаю, что введение нового класса позволяет с меньшей болью портировать свои приложения на ES...
Что означает термин legacy?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #5 :
Февраль 01, 2015, 11:12 »
Цитата: __Heaven__ от Январь 29, 2015, 10:49
Что означает термин legacy?
То и означает, "наследство", т.е. предыдущая реализация которая еще/пока поддерживается, но уже не развивается
Цитата: __Heaven__ от Январь 29, 2015, 09:43
Я получал такое же и на QGLWidget, хотел подписать оси координат. Но плюнул и сделал xyz трёхмерными.
Да, в QOpenGLWidget с текстом тоже проблемы, после вызовов OpenGL текст почему-то не рисуется. У меня были буквы в виде моно битмапов, рисовал через glCallList. Работало, но возможности бедные. Переделал на QPainter, сначала в QImage а потом drawImage
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #6 :
Февраль 04, 2015, 16:23 »
Как полёт? Есть изменения?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #7 :
Февраль 04, 2015, 16:44 »
Цитата: __Heaven__ от Февраль 04, 2015, 16:23
Как полёт? Есть изменения?
Да какой "полет" - стреляют, не было света
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #8 :
Февраль 04, 2015, 17:32 »
сочувствую...
Записан
mitrich
Гость
Re: QOpenGLWidget vs QGLWidget
«
Ответ #9 :
Февраль 09, 2015, 11:26 »
Цитата: __Heaven__ от Январь 28, 2015, 18:07
К примеру, мне не хватает setAutoSwap(bool) и swapBuffers().
Цитата: Igors от Январь 29, 2015, 07:37
Вызов makeCurrent почему-то блокирует рисование.
Существенное отличие от
QGLWidget
, как я понял в том, что
QGLWidget
создает собственное нативное окошко с контекстом OpenGL, а
QOpenGLWidget
вместо этого использует рендеринг в FBO. Соответственно, контроля setAutoSwap/swapBuffers не будет и makeCurrent будет работать по другому.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #10 :
Февраль 09, 2015, 11:56 »
"Выталкивать" (рисовать асинхронно) кое-как сделал, но неприятная проблема "застревания" кадра при синхронном. Рисую в drawGL, но почему-то экран обновляется лишь при след перерисовке. Сделал собственный updateFlag - все равно необходим чтобы избежать ложных перерисовок.
Насколько понял по исходникам, схема такая. QOpenGLWidget рендерится в текстуру, а обычные виджеты - в QImage который хранит QBackingStore. При выводе все это собирается в OpеnGL и делается swapBuffers для всего окна. И все бы ничего но зачем дергать всякий раз QOpenGLWidget - хз. Также действия рисования могут затрагивать контекст окна. Напр рисую текстуру с какой-то альфой - а получаю blend всего окна. Сегодня буду разбираться с этим багом.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #11 :
Февраль 15, 2015, 18:06 »
Есть новости? Удалось победить лишние перерисовки и др.?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QOpenGLWidget vs QGLWidget
«
Ответ #12 :
Февраль 15, 2015, 18:15 »
Цитата: __Heaven__ от Февраль 15, 2015, 18:06
Есть новости? Удалось победить лишние перерисовки и др.?
Я думал уже ответил в предыдущем посте
С перерисовками - если свой updateFlag == false, то drawGL пропускаем. Др возможности (судя по исходникам 5.4) не нашел. Рисовать/выталкивать асинхронно можно, но для этого надо юзать context()->makeCurrent (а не this->makeCurrent). В общем с причудами, но работать можно
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: QOpenGLWidget vs QGLWidget
«
Ответ #13 :
Февраль 15, 2015, 18:59 »
Я понял. Думал, мало ли обнаружилось чего без заглушек.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...