Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Allender от Октябрь 03, 2006, 13:45



Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: 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 в картинку и рендерить не наш метод :)))
Нужно чтобы всё красиво:)
Кто-нибудь решал подобную задачку?
Заранее спасибо :)


Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: burunduk от Октябрь 04, 2006, 09:12
Найдёте решение - выложите сюда пожалуйста. Меня тоже этот вопрос интересует.

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


Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: Allender от Октябрь 04, 2006, 12:21
Цитата: "burunduk"
Найдёте решение - выложите сюда пожалуйста. Меня тоже этот вопрос интересует.

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


Может я чего маленько не понимаю.... Но при PaintEvente не плохо бы сцену заапдейтить... Мало ли чего на ней было... У этого эвента даже рект есть, который изменился в процессе работы...


Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: Allender от Октябрь 17, 2006, 12:24
Вот оно - решение :))))
QRubberBand


Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: Dendy от Октябрь 17, 2006, 12:41
Цитата: "Allender"
Вот оно - решение :))))
QRubberBand


Только хотел сказать!  :D


Название: Qt-4.1.4 Рисуем поверх OpenGL сцены
Отправлено: burunduk от Февраль 28, 2007, 15:19
не понравился мне он :(
каждый раз перерисовывает всю сцену (paintGL вызывается при каждом движении мыши)

Цитата: "Allender"
Вот оно - решение :))))
QRubberBand