Russian Qt Forum
Ноябрь 01, 2024, 10:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Рисование на QGLWidget из другого класса  (Прочитано 3284 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Сентябрь 21, 2014, 16:39 »

Привет, друзья!
У меня имеется класс, наследованный от QGLWidget. Я в нём произвожу отрисовку нескольких объектов.
У меня появилась необходимость разделить этот класс на двое - отрисовывать один из объектов с помощью нового класса.
Мне изветно, что это нужно делать с помощью QGLContext.
Я пробовал наследовать мой новый класс от QGLWidget. Но выходит не совсем корректное рисование и сегфолт при выходе.

Каким образом будет правильно сделать необходимое мне разделение?

Up
так как контекст в программе единственный, было достаточно создать обычный класс, неунаследованный от кого-либо (правда, я унаследовался от QObject ради самодеструкции). Наличие <QOpenGLShaderProgram> позволило включить необходимые мне для рисования функции.
« Последнее редактирование: Сентябрь 21, 2014, 17:58 от __Heaven__ » Записан
vulko
Гость
« Ответ #1 : Сентябрь 24, 2014, 14:57 »

не совсем понятно описано...

я так понял, что нужно отрисовку вынести в отдельный класс.
если так, то ничего не мешает создавать сколько угодно классов, описать в нем метод draw() и дергать их из paintGL() у QGLWidget'а.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Сентябрь 25, 2014, 07:45 »

не совсем понятно описано...

я так понял, что нужно отрисовку вынести в отдельный класс.
если так, то ничего не мешает создавать сколько угодно классов, описать в нем метод draw() и дергать их из paintGL() у QGLWidget'а.

Да, именно так. Меня смутило наличие контекста, думал, что его нужно как-то дёргать из класса в класс.
Записан
vulko
Гость
« Ответ #3 : Сентябрь 25, 2014, 13:45 »

не совсем понятно описано...

я так понял, что нужно отрисовку вынести в отдельный класс.
если так, то ничего не мешает создавать сколько угодно классов, описать в нем метод draw() и дергать их из paintGL() у QGLWidget'а.

Да, именно так. Меня смутило наличие контекста, думал, что его нужно как-то дёргать из класса в класс.

нет, дергать не нужно, по крайней мере для одного виджета с одним и тем же контекстом.

а вот если отрисовка будет в разных потоках, то тут придется подергать makeCurrent() для контекстов/виджетов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.063 секунд. Запросов: 23.