LINUX.ORG.RU

OpenGL. Программирование графики в Linux


0

0

Опубликован новый учебный курс, посвященный созданию графических приложений с помощью OpenGL. Рассматриваются различные темы: от простейшего рисования квадрата и GL_QUADS сотоварищи до паттернов, анимации и двойной буферизации. В качестве оконного инструментария используется Qt.

>>> Подробности

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от LestorN

> Жалко только что под Qt3 а не Qt4...

В комплекте с Qt4 есть Qt4 Demo, Там достаточно примеров использования OpenGL, да и код правильнее.

los_nikos ★★★★★
()

>#include <qapplication.h> > >int main(int argc,char** argv) >{ > QApplication app(argc,argv); > QWidget qwgt; > > app.setMainWidget(&qwgt); > qwgt.show(); > return app.exec(); >}

не собралось под qt4

P.S. а мож че не так делал :)

vdm ★★
()

Дмитрий Пантелеичев красавчиг, молодец, спасибо за доку.

anonymous
()
Ответ на: комментарий от Boiler

> надо запускать qmake от qt3

Таки да. И иметь QTDIR, показывающий на Qt3 тоже не помешает :)

e_val ★★★
() автор топика

glut нынче не в моде? :))

Amp ★★★
()

Все круто, за исключением того, что чтоб собрать проект мне почему-то пришлось писать 
# qmake -project "CONFIG += opengl"
# qmake -spec /usr/local/share/qt/mkspecs/freebsd-g++/
# QTDIR=/usr/X11R6/ make

swizard
()

Дожили, млять! Уже ОпенДжиэЛ с КоТяхом за нумером 3 и 4 четко ассоциируется. Мельчают девелоперы, ой мельчают, скоро без обертки на вижуалвасике и helloworld написать не смогут...

Gharik
()

А для чего нужен Qt в данном случае? Не проще ли создать окно средствами X или вообще используя SDL - будет работать на любой платформе. Довесок мизерный, в сравнении с Qt.

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

2snigga

нет, примеры для куте3 компиляются

другое дело, что там не всё в конфиге проекта прописано

dancv
()
Ответ на: комментарий от andreyu

> А для чего нужен Qt в данном случае? Не проще ли создать окно средствами X или вообще используя SDL - будет работать на любой платформе. Довесок мизерный, в сравнении с Qt.

Не проще. Родное API glx достаточно мерзкое + неперносимое. Qt или GLUT позволяют абстрагироваться от этих деталей и сконцентрироваться на OpenGL-коде. Сдается мне, эту тему тут обсуждали две недели назад.

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

> Дожили, млять! Уже ОпенДжиэЛ с КоТяхом за нумером 3 и 4 четко ассоциируется. Мельчают девелоперы, ой мельчают, скоро без обертки на вижуалвасике и helloworld написать не смогут...

Вот какую тему не гляну - обязательно там есть тролль Gharik, которому, как он сам выразился, "нечего делать, пока компилится Gentoo, вот и остается только флеймить на форуме". Gharik, ей-богу, Вы б лучше это время потратили на написание простенькой демки с вращающимся кубом - тогда Ваши слова будут иметь под собой хоть какой-то вес. Или, еще лучше - напишите приложение к туториалу, где в качестве оконного инструментария был бы glut. А то, сдается мне, Вы, как svu, не очень хорошо себе представляете роль Qt в приложении OpenGL. И, в отличие от svu, вообще не слишком хорошо себе представляете, как пишутся программы.

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

> А для чего нужен Qt в данном случае? Не проще ли создать окно средствами X или вообще используя SDL - будет работать на любой платформе. Довесок мизерный, в сравнении с Qt.

Реальный пример: тебе надо сложное GUI приложение (кнопочки, рюшечки и прочие виджеты), а также OpenGL-окно (ну в качестве примера - какой-нить 3Д-редактор и прочие утилитки). Сделать это всё на SDL - запаришся велосипед (GUI) изобретать. Проще использовать Qt, который в этом плане крут.

SDL больше подходит для игр (также как и чистое GLX в иксах). Glut подходит разве что для демок простых. А Qt соответственно для GUI-приложений с трехмерным очком.

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

>Таковы обоснования моего выбора (хотя выбор во многом был >случайным).

После читать трудно. ИМХО для изучения OpenGL нужно именно SDL.
GUI к которому достаточно много. GLUT вобще заброшен.
Опять же GUI приложение с окошечком или областью на OpenGL мало кому нужно чаще всё таки нужно одно opengl окно и всё там.
ИМХО ракетой гвозди забиваем и пример даём на очень узкой областе.

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

> Освищение, материалы не описанны. > Текстуры тоже в топке. > Про шедеры я молчу.

А вот господин Gharik обсолютно прав насичёт этого, в отличие от e_val, который сидит в танке и не понимает сути постов, при этом мерзскоязычно пытаясь отвечать на них.

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

> Реальный пример: тебе надо сложное GUI приложение (кнопочки, рюшечки и прочие виджеты), а также OpenGL-окно (ну в качестве примера - какой-нить 3Д-редактор и прочие утилитки). Сделать это всё на SDL - запаришся велосипед (GUI) изобретать. Проще использовать Qt, который в этом плане крут.

Лучше уж имхо тогда GTK юзать, и C++ обертки к нему, чем наслаждатся изучением мета-языка к C++ в QT.

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

> А вот господин Gharik обсолютно прав насичёт этого, в отличие от e_val, который сидит в танке и не понимает сути постов, при этом мерзскоязычно пытаясь отвечать на них.

И в чем интересно конкретно прав г-н Gharik? ;-)

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

> Лучше уж имхо тогда GTK юзать, и C++ обертки к нему, чем наслаждатся изучением мета-языка к C++ в QT.

Так нету у GTK+ Gl-виджетов... или они мне неизвестны. Реальные альтернативы Qt здесь - это GLUT и SDL. Qt, на мой взгляд, позволяет наиболее быстро создать Gl-виджет и приступить неспосредственно к изучению OpenGL, которому, собственно, и посвящен курс. А glBegin() - он везде glBegin().

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

В случае Qt хорошо что есть поддержка Pixel Buffer встроенная (которой нет в SDL), это хорошо для кроссплатформенности. Помню долго прикручивал GLX пикселбуфферы к SDL, получился грязный хак, и естественно утратилась кроссплатформенность.

fifajan
()
Ответ на: комментарий от e_val

> А glBegin() - он везде glBegin().

То есть, понятным всем языком. Набор команд для рисования веера из треугольников абсолютно одинаков и в GLUT, и в Qt (за SDL не скажу - не работал). Курс посвящен _OpenGL_, а не Qt. Выбор Qt как оконного инструментария имеет свои преимущества, и в рамках курса, и сам по себе, но не нравится Вам - Бога ради, используйте хоть голый GLX ;-) OpenGL от этого не меняется.

А вот текстуры и материалы с освещением - это замечания по существу, спасибо.

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

> GtkGLExt

Значит, неизвестны :) Рад за GTK+

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

> А вот текстуры и материалы с освещением - это замечания по существу, спасибо.

а - так будут ещё статьи в этом курсе? Если да, то это хорошо, в новости об этом не сказано. Тогда действительно пофиг, QT или другой враппер используется.

libgtkgl2.0-dev - Gimp Toolkit OpenGL area widget include files and static library

libgtkglext1-dev - OpenGL Extension to GTK (development files)

Spectr ★★★
()

помоему чем заморачиватся с чистым opengl, лучше взять любой движок и начать ваять на нем. Благо их щас выбирай на любой вкус - Crystal Space, Irrlicht, Ogre etc

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

> Реальный пример: тебе надо сложное GUI приложение

Вот только не надо нас уверять, что "учебный курс, посвященный созданию графических приложений с помощью OpenGL" обязан завершаться созданием блендера :)

Я сам сторонник Qt, как весьма удобного инструментария написания GUI-приложений. Но в данном случае, действительно проще было бы использовать SDL. Проще для понимания "учеником" именно OpenGL, а не обертки. IMHO, есссно :)

anonymous
()
Ответ на: комментарий от lester_dev

> помоему чем заморачиватся с чистым opengl, лучше взять любой движок и начать ваять на нем

Зависит от целей тех, кому предназначен данный материал. Для написания игрушки - да, возможно. Для написание блендера - маловероятно, что игровые движки подойдут :)

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

> Для написание блендера - маловероятно, что игровые движки подойдут :)

В блендере, если кто забыл, весь интерфейс отрисовывается средствами OpenGL.

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

> В блендере, если кто забыл, весь интерфейс отрисовывается средствами OpenGL.

Ну хорошо, пусть будет не Blender, а Varicad :)

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

>> Для написание блендера - маловероятно, что игровые движки подойдут :)

> В блендере, если кто забыл, весь интерфейс отрисовывается средствами OpenGL

Гм... Может ты чего не то отквотил или как-то не так понял написанное ? Или в блендере используется движок от FPS-игрушки ? :D

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

>> В блендере, если кто забыл, весь интерфейс отрисовывается средствами OpenGL

> Гм... Может ты чего не то отквотил или как-то не так понял написанное ? Или в блендере используется движок от FPS-игрушки ? :D

это в пику тем, кто говорит, что GLX не портируемый - ессно, под Win используются WINAPI для OpenGL.

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

> это в пику тем, кто говорит, что GLX не портируемый - ессно, под Win используются WINAPI для OpenGL.

А кто жалуется? :)

2anonymous: извините, неудачно процитировал, игровой движок ессесно не имелся ввиду :).

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

> это в пику тем, кто говорит, что GLX не портируемый - ессно, под Win используются WINAPI для OpenGL.

Имелось ввиду, что кусок кода, ответственный за поддержку пикселбуферов, при использовании SDL, прийдется переписать и под Win32 и под MacOS, а при использовании Qt переписыватьт не прийдется.

P. S. В современных видеокартах на замену пикселбуфферам пришел FBO (frame buffer object), позволяющий писать платфоменнонезависимый код, но на наличие современных видеокарт, пока, расчитывать не приходеццо.

fifajan
()
Ответ на: комментарий от Esh

>Реальный пример: тебе надо сложное GUI приложение (кнопочки, рюшечки и прочие виджеты), а также OpenGL-окно (ну в качестве примера - какой-нить 3Д-редактор и прочие утилитки). Сделать это всё на SDL - запаришся велосипед (GUI) изобретать. Проще использовать Qt, который в этом плане крут.

Ровно как и FLTK1/2 (Fl_Gl_*) или FOX (FXGL*). Просто Qt в разы более распространён.

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

>Ровно как и FLTK1/2 (Fl_Gl_*) или FOX (FXGL*). Просто Qt в разы более распространён.

Кстати оба кросcплатформенные как и Qt

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

>Зависит от целей тех, кому предназначен данный материал. Для написания игрушки - да, возможно. Для написание блендера - маловероятно, что игровые движки подойдут :)

А как вы думаете, кого больше --- писателей игр или писателей, например, систем инженерных расчётов с трёхмерной движущейся визуализацией?

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

> Gharik, ей-богу, Вы б лучше это время потратили на написание простенькой демки с вращающимся кубом

Стандартные алгоритмы на разных языках переписывать только велосипедостроители из когорты КДЕшнегов могут. А если вспомнить на чем основано КДЕ, то выводы и вовсе очевидны, о мой хороший друг.

> А то, сдается мне, Вы, как svu, не очень хорошо себе представляете роль Qt в приложении OpenGL.

Вы случайно не философ от марксистско-ленинского пантеона? А то помню, одна такая зараза у меня требовала в своё время описать роль оного в производстве стальных канатов, руки чесались повесить на этом самом канате. Фтопку КуТэ, реальный софт использует Motif/Tk и без вариантов.

> И, в отличие от svu, вообще не слишком хорошо себе представляете, как пишутся программы.

Не поверишь, дядя, но смотрю "как пишутся большие и серьёзные программы" и рыдаю. До того дошёл, что уволился нафиг, теперь буду в универе преподавать, лишь бы в долбаное ИТ снова не соваться. А самые правильные программы давным давно написаны, причем строго в vim/emacs. А те "программы", что пишутся сейчас большинством "программонапейсателей" (ТМ), годятся разве что на ритуальные распечатки на туалетной бумаге для последующей утилизации.

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

GLUT издох, кстати, а про QT как обёртку - никто и не спорит. Но давайте таки не путать тёплое с мягким, покажите мне хотя бы один кутешный, сдл-ный или глют-овый вызов, скажем, в нативном glxgears.

Ибо "прикрутка юзер интерфейса" и "программирование графики" - неколько разные таки вещи, первое вообще в vi для подсоса в libglade за 5 минут ваяется.

Gharik
()

Статья, конечно, полезная, но LOR есть LOR, буду ругать:
шаблоны, по моему, вещь слишком специфичная и редко используемая(да и вообще устаревшая), чтоб уделять им целую главу(в отличии от освещения),
про полигоны, отличные от треугольников, тоже лучше особо и не думать,
а вместо 2d IMXO лучше допустить лишнюю сущность - glu (ради gluLookAt (и примеров моделей)), но зато сразу изучать OpenGL в "естественных условиях"

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

> Не поверишь, дядя, но смотрю "как пишутся большие и серьёзные программы" и рыдаю. До того дошёл, что уволился нафиг, теперь буду в универе преподавать, лишь бы в долбаное ИТ снова не соваться.

Ну тогда вопросов больше не имею. Человек, осознавший, что этот мир плох - страшный человек :) Как преподаватель вуза очень хочу надеяться, что Вам не удастся заразить студентов ни своим фанатизмом, ни своим пессимизмом. Ибо и то, и другое - смерть для разработчика, что Вы своим примером (см. цитату выше) и демонстрируете.

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

> Ибо "прикрутка юзер интерфейса" и "программирование графики" - неколько разные таки вещи, первое вообще в vi для подсоса в libglade за 5 минут ваяется.

Вот я именно это и стараюсь втолковать. Курс посвящен программированию графики (с использованием OpenGL), а какой там оконный инструментарий - дело десятое.

А что касается теплого с мягким

> покажите мне хотя бы один кутешный, сдл-ный или глют-овый вызов, скажем, в нативном glxgears.

Покажите мне glxgears, который компилируется и работает на X, Mac и Win и при этом не содержит в себе тонны #ifdef'ов ;-)

e_val ★★★
() автор топика

ЗЫ
а в конце- нет освещения, так может для восприятия объема хотя-бы туман включить и/или режим WireFrame(всего-ведь одна понятная команда) - а то сейчас глаза болят даже на скриншоты смотреть

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

> Покажите мне glxgears, который компилируется и работает на X, Mac и Win и при этом не содержит в себе тонны #ifdef'ов ;-)

Дык на жабе, естественно! Там даже фреймворк под это дело был ;)

Gharik
()
Ответ на: комментарий от e_val

> Ну тогда вопросов больше не имею. Человек, осознавший, что этот мир плох - страшный человек :) Как преподаватель вуза очень хочу надеяться, что Вам не удастся заразить студентов ни своим фанатизмом, ни своим пессимизмом. Ибо и то, и другое - смерть для разработчика, что Вы своим примером (см. цитату выше) и демонстрируете.

Мы не разработчики и даже не админы, мы инженеры-механики и торговцы нефтью - не стоит упускать сие из виду :)

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

>Дык на жабе, естественно! Там даже фреймворк под это дело был ;)

JSDL

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