LINUX.ORG.RU

OpenGL и избежание использования Qt окон (виджетов).


0

1

Всем доброго времени суток.Вот недавно бросил винду и директХ, теперь надо осваиваться с ОГЛ и с Qt. На сколько я понял из прочитанного в интернете мне прийдётся работать с уже существующими классами и переопределять их функции. Можно ли избежать этого? Т.е. не переопределять функции, а писать свои? Если я не ошибусь функция называлась QtWidget::RenderGL. Ну или что-то в этом роде. Смогу ли я написать нечто вроде этого void RenderGL { ... } и отрисовывать без оболочки (окна)? Помимо рендера, наверняка есть и другие функции, которые нужно будет переопределять, можно ли будет и их самому описать?

Заранее всем спасибо!

Вы же openGL'ный вывод в какой-то виджет «пихать» будете, а не отдельным окном отображать? Так что, хоть отрисовку содержимого и будете выполнять на нормальном opengl, посредником все равно будет какой-нибудь контейнер.

Например, в gtk все вызовы openGL надо «упаковывать» в посредника

gdk_gl_drawable_gl_begin(glDrawable, glContext);
...
gdk_gl_drawable_gl_end(glDrawable);
В кутях, по-видимому, так же.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от trex6

или SDL.

а вот насчёт обрамления окна я не могу ничего дельного сказать про X Window вообще.

jeuta ★★★★
()
Ответ на: комментарий от Eddy_Em

Нет, не буду. Я надеялся выводить во весь экран и использовать «чистый» ОГЛ.

Т.е. нечто безобёрточное.

void render()

{

OGL->Begin(...);

...

OGL->End(...);

}

linxusr
() автор топика
Ответ на: комментарий от linxusr

Тогда GLUT это намного лучше, чем Qt.
И по отсутствию лишних переделок и по объему библиотеки.

trex6 ★★★★★
()
Ответ на: комментарий от linxusr

Да. GLUT берет на себя работу с оконным менеджером для создания контекста.

trex6 ★★★★★
()
Ответ на: комментарий от linxusr

Тогда вам ничего промежуточного не нужно использовать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от madgnu

Я же говорю, что я в интернете инфу искал, а в той инфе примеры с использованием виджетов Qt. Поэтому я и создал здесь тему. Кстати, не подскажете, где можно взять документацию по GLUT или SDL? И что из них лучше?

linxusr
() автор топика
Ответ на: комментарий от linxusr

Не надо всякие SDL использовать. GLUT вам на все 100% хватит. Читайте «красную книгу». И вообще, вам сюда.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от linxusr

>Кстати, не подскажете, где можно взять документацию по GLUT или SDL? И что из них лучше?

В гугле. Для ваших задач лучше GLUT.

madgnu ★★★★★
()

Ощущение что Вы и не брались за «винду и директХ»...

Jetty ★★★★★
()

> Т.е. не переопределять функции, а писать свои?

Одному мне кажется, что вы здесь сами себе противоречите? Переопределение функции в C++ — это и есть написание своей реализации. Пусть вас не смущает название модуля «QtOpenGL», он всего лишь предоставляет кроссплатформенный контекст, внутри которого уже сам ваш родной код OpenGL и будет выполняться. Правильно написанная программа сможет одинаково работать внутри GLUT, SDL, Qt и прочих обёрток, меняя одну на другую хоть в рантайме (вопрос стоит только нужно ли это вообще).

Помимо рендера, наверняка есть и другие функции, которые нужно будет переопределять, можно ли будет и их самому описать?


Да, в Qt их всего три: initializeGL(), resizeGL() и paintGL(). Джентельменский набор callback'ов на все случаи.

Dendy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.