Название: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 09:42 Делаю OpenGL 2D проект.
Все рисуется через QPainter. Все связанное с OGL выглядит так: Код: void cGLCanvas::initializeGL() Под XP работает отлично. Пoд Mac OS X мерцает курсор. Под Vista мирцает все. Под Win 7 ничего не рисуется кроме шрифтов. Что может быть не так?? Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: Авварон от Сентябрь 20, 2010, 09:46 по-моему update() не надо (по идее, он вызовет рекурсивную перерисовку, возможно в этом причина)
да и не мешало всё-таки ресайз и инит настроить:) Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 11:32 А каким способом кроме update можно сделать постоянную перерисовку?
Вроде бы repaint вызывает перерисовку немедленно, а update - сначала обрабатывает все другие события? что нужно сделать в init и resize? Я думал QPainter делает все что нужно? Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: Авварон от Сентябрь 20, 2010, 11:52 почитайте книжки по опенгл)
QPainter вообще мало связан с OpenGL. Кутешный огл - это ОБЫЧНЫЙ огл с добавлением разных удобств. В ините и ресайзе нужно писать функции инициализации ОГЛ и настройку вьюпорта соотетственно. Пример: Код: // Пример пейнта: Код: void CastleFight::paintGL() Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 12:01 Установка матриц и вьюпорта не нужна. QPainter ставит свою. Тоже самое с ресайзом.
Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: Авварон от Сентябрь 20, 2010, 12:09 да, либо за 2 года что-то изменилось, либо я просто не видел этого в доке. В любом случае, в моей проге пейнтер нафиг не нужен.
да, согласен, инит и ресайз не надо. А вот апдейт таки курите Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 12:28 Задача вобщем-то простая:
2Д игра, с кучей прозрачных картинок, градиентов и прочей шушеры. Рисоваться должно хотя бы кадров 25 в секунду. Если отрубаю OGL и рисую на обычном виджете - все ок, но тормозит адски. Если включаю OGL, то на висте мерцает, на семерке вообще ничего не работает. Код: cGLCanvas::cGLCanvas(QWidget *parent) : Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 14:09 А ларчик просто открывался...
на семерке просто надо было установить последние дрова, с поддержкой OGL шейдеров(DX работал нормально, что меня и сбило). После этого начало мерцать также как и на Висте. Тут тоже просто: setAutoFillBackground(false); Почему не мерцало на ХР? не знаю... Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: @!!ex от Сентябрь 20, 2010, 14:24 Кстати, комментарий насчет использования таймера был правильным.
update не работает как надо на Висте и Семерке. а repaint использовать нельзя, т.к. он ведет к рекурсивной перерисовке. В итоге и пришлось делать на таймере. Название: Re: OpenGL мерцает под VIsta не рисует под Win 7 Отправлено: ufna от Сентябрь 20, 2010, 19:06 а можно скомпилированный пример и минимальный рабочий код с этим багом? Сколько работал с OGL и Qt ничего такого не было.
|