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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Текст в OpenGL  (Прочитано 3533 раз)
kobra
Гость
« : Май 29, 2010, 23:15 »

Здраствуйте!
Сейчас работаю над тем что строю график функции с помощью библиотеки OpenGl.
У меня есть клас Graph который должен как раз все рисовать. Он унаследован от класа QGLWidget. Дальше я привязал этот виджет к моему главному окну:

Код:
Graph *gr = new Graph(ui->centralWidget);

В методе paintGL() я прописал алгоритм построения графика(и к моему удивлению без всяких проблем я получил желаемый результат почти сразу).

Но на графике конечно же нужно понадписывать оси, а также некоторые значения. Думал воспользоваться функцией renderText(). Но я ее или криво использую или она все-таки делает не то что мне нужно. Насколько я понял, она работает совсем не так, как другие функции библиотеки(к примеру glVertex2f). Тойсть если я использую процедуру glVertex2f и передаю туда координаты 100, 100 то в функции renderText координаты 100, 100 это совсем другое место. Плюс насколько я понял, если я буду менять размер моего окна, то график будет тоже расширяться но текст останеться на том же месте.

Как мне решить эту проблему?

Заранее благодарен
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Май 30, 2010, 10:53 »

renderText работает в screenSpace - поэтому естественно координаты не совпадают, но привязать его к вашим точкам на графике можно - для этого прийдется написать функцию преобразования WorldSpace координат в ScreenSpace координаты. Размер текста действительно не меняется (по той же причине) - но если есть увеличение / уменьшение для ваших графиков - то можно попробовать менять размер шрифта для renderText как то пропорционально.
Записан
kobra
Гость
« Ответ #2 : Май 30, 2010, 12:00 »

Спасибо, таким способом работает.
Еще такой вопрос могу ли я рисовать с какого нибудь другого метода моего класса(не paintGL())?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Май 30, 2010, 12:21 »

а доку мы не читаем?
Код:
void QGLWidget::renderText ( double x, double y, double z, const QString & str, const QFont & font = QFont(), int listBase = 2000 )
This is an overloaded function.
x, y and z are specified in scene or object coordinates relative to the currently set projection and model matrices.
Записан
kobra
Гость
« Ответ #4 : Май 30, 2010, 19:29 »

читал но чесно говоря не понял что имелось ввиду... со своим вторым вопросом разобрался, просто надо чтоб тот метод вызовался из paintGL
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Май 30, 2010, 20:24 »

функция с 2мя координатами работает в оконной системе координат
функцмя с 3мя - в координатах сцены
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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