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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt-4.1.4 Рисуем поверх OpenGL сцены  (Прочитано 6643 раз)
Allender
Гость
« : Октябрь 03, 2006, 13:45 »

Ситуация такая:
Есть виджет с нацепленным OpenGL контекстом сторонней библиотеки.
Его парент, это фрейм - занимающийся обработкой пользовательских запросов.
Задача: пользователь должен мышкой нарисовать прямоугольник на виджете, для дальнейшай обработки, например - перекрасить все что попало под выделение.
Перерисовывать OpenGl сцены на каждое двидение мышки - это перебор Улыбающийся))
Раньше (Qt-3)делалось следующее:
Код:

  QPainter aPainter( myOpenGLViewPort);
  aPainter.setRasterOp(Qt::XorROP);
  aPainter.setPen(Qt::white);
  QRect aRect = QRect(myStartX, myStartY, myCurrW, myCurrH);
  if ( !myRect.isEmpty() )
 aPainter.drawRect( myRect );
  aPainter.drawRect(aRect);
  myRect = aRect;


Теперь setRasterOp отменили, вместо него compositionMode(), причем операции наложения доступны только на QImage (который, кстати, теперь QPaintDevice)

Да и чтобы врубить паинтер в любом месте ещё и доп атрибут нужен
Qt::WA_PaintOutsidePaintEvent.

Вобщем, как спортироваться, не представляю....
Дампить временно OpenGL в картинку и рендерить не наш метод Улыбающийся))
Нужно чтобы всё красиво:)
Кто-нибудь решал подобную задачку?
Заранее спасибо Улыбающийся
Записан
burunduk
Гость
« Ответ #1 : Октябрь 04, 2006, 09:12 »

Найдёте решение - выложите сюда пожалуйста. Меня тоже этот вопрос интересует.

Я так понимаю, что OpenGL и обычное рисование несовместимо...
Как только в методе paintEvent() пишешь QPainter(this) - опенГЛ сцена пропадает Грустный
Записан
Allender
Гость
« Ответ #2 : Октябрь 04, 2006, 12:21 »

Цитата: "burunduk"
Найдёте решение - выложите сюда пожалуйста. Меня тоже этот вопрос интересует.

Я так понимаю, что OpenGL и обычное рисование несовместимо...
Как только в методе paintEvent() пишешь QPainter(this) - опенГЛ сцена пропадает Грустный


Может я чего маленько не понимаю.... Но при PaintEvente не плохо бы сцену заапдейтить... Мало ли чего на ней было... У этого эвента даже рект есть, который изменился в процессе работы...
Записан
Allender
Гость
« Ответ #3 : Октябрь 17, 2006, 12:24 »

Вот оно - решение Улыбающийся)))
QRubberBand
Записан
Dendy
Гость
« Ответ #4 : Октябрь 17, 2006, 12:41 »

Цитата: "Allender"
Вот оно - решение Улыбающийся)))
QRubberBand


Только хотел сказать!  Веселый
Записан
burunduk
Гость
« Ответ #5 : Февраль 28, 2007, 15:19 »

не понравился мне он Грустный
каждый раз перерисовывает всю сцену (paintGL вызывается при каждом движении мыши)

Цитата: "Allender"
Вот оно - решение Улыбающийся)))
QRubberBand
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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