crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Qt4.5 + OpenGL, не понимаю я техники быстрой отрисовки..
ieroglif
  опции профиля:
сообщение 24.4.2009, 10:33
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 19.1.2009
Из: планета Земля
Пользователь №: 496

Спасибо сказали: 0 раз(а)




Репутация:   0  


значит создаю я QGLWidget, переопределяю инициализациюГЛ, изменение размера окна , и паинтГЛ.
и с виду всё хорошо - как надо обновить картинку на экране - вызвается updateGL() слот и перерисовывается всё...
но попахивает тут очень жёстким извращением - если я хочу сделать вращающийся кубик, то должен запустить свой таймер, который будет на таймаут вызывать updateGL...
и не будет у меня 600фпс - фиг.. будет в лучшем случае столько, сколько таймер мне натикает..
шо це таке???
я совсем тупой?
неужто тут нету
while (true) {
  dispatchEvents();
  drawGL();
}

?
неужто действительно надо таймером перерисовывать окошко что бы получить фпсы?
почему оно самостоятельно не перерисовывается так часто, как могёт? :blink:

(а как вспоминаю о том, что у меня чипсет на ноуте gma950, и линуховые интеловские дрова - ваще убить кого-нить хочу)...

Сообщение отредактировал Admin - 24.4.2009, 15:30
Причина редактирования: отредактирована нецензурщина...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 24.4.2009, 15:29
Сообщение #2


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


ieroglif, устное предупреждение за нецензурщину...
В следующий раз буду наказывать!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ieroglif
  опции профиля:
сообщение 24.4.2009, 20:37
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 19.1.2009
Из: планета Земля
Пользователь №: 496

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Admin @ 24.4.2009, 17:59) *
ieroglif, устное предупреждение за нецензурщину...
В следующий раз буду наказывать!

извиняюсь... был оччень зол..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 24.4.2009, 20:44
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


600 фпс это хорошо, а почему не устраивают стандартные 25-30 фпс, которые глаз может воспринимать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
registr
  опции профиля:
сообщение 20.5.2010, 14:07
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


Для работы с OpenGL в Qt4 есть три определяемые разработчиком функции:

virtual void initializeGL() // автоматически вызывается первой и только один раз, в ней разработчик делает настройки и инициализации OpenGL

virtual void resizeGL(int nW, int nH) // автоматически вызывается второй и только один раз, нужна, чтобы связать сцену с размером виджета (окна), так же вызывается при изменении размеров окна, в ней так же логично задать матрицу проектирования или проекцию

virtual void paintGL() // вызывается автоматически при вызове команд обновить изображение, вызывается любое количество раз, заменяет старое изображение на новое

Посмотрите два примера: один в Шлее, другой в Бланщет.
Цитата
слот и перерисовывается всё...

Есть два способа. Статическая картина и динамическая. Статическая задается с помощью так называемых "таблиц отображений", строится один раз и хранится в буфере, при поворотах изменяется только матрица проектирования.
(см. Шлее). При необходимости, данную таблицу отбражений можно изменить. Динамическая функция отрисовки суестся прямо в paintGL() (см. Бланшет), каждый раз она все перерисовывает заново, если объектов сцены очень много, то будут тормоза. чтобы этого не было как раз существует таблица отображений. Более подробно: Райт, Липчак, Суперкнига.

ЗЫ Надеюсь не слишком поздно :)

Сообщение отредактировал registr - 20.5.2010, 14:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.1.2025, 15:42