Russian Qt Forum
Июнь 17, 2024, 03:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2 3 ... 5   Вниз
  Печать  
Автор Тема: [Решено] Наиболее эффективный путь изучения OpenGL  (Прочитано 33805 раз)
8Observer8
Гость
« : Август 04, 2014, 08:40 »

Привет!

Судя по этой цитате из книги "OpenGL. Супер книга" "трёхмерная графика стала типичной составляющей пользовательских и коммерческих приложений, а не только игр и научных приложений":
Цитировать
OpenGL используется для решения множества задач, возникающих в различных сферах - от архитектурных и инженерных приложений до программ моделирования, используемых для создания компьютерных монстров в фильмах со спецэффектами. Введение трехмерного программного интерфейса приложений, являющегося промышленным стандартом, в такие операционные системы, как Microsoft Windows и Macintosh OS X, имело впечатляющие последствия С распространением аппаратного ускорения и быстродействующих микропроцессоров для персональных компьютеров трёхмерная графика стала типичной составляющей пользовательских и коммерческих приложений, а не только игр и научных приложений, как было раньше.

В связи с этим у меня возникло желание использовать его во всех своих приложениях (или в большинстве из них). Но есть трудности в том, как наиболее эффективно осваивать OpenGL. Покажите, пожалуйста, этот путь с самого начала. Как ребёнок бы начал его осваивать? Улыбающийся

Заранее спасибо за ответы!
« Последнее редактирование: Сентябрь 02, 2014, 12:28 от 8Observer8 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Август 04, 2014, 09:14 »

Самый простой и верный способ?
Просто делайте что-нибудь с OpenGL, как можно чаще, тогда и научитесь. Других путей не бывает.
 Улыбающийся
Записан

8Observer8
Гость
« Ответ #2 : Август 04, 2014, 09:19 »

Да, тоже вариант Улыбающийся

Надеюсь, ссылки накидуют, кто уже освоил.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Август 04, 2014, 11:02 »

Я изучаю сейчас OpenGL по этой же книге.
Её пока вполне достаточно. Примеров там тоже хватает.
Были небольшие сложности с подсоединением glut и запуском GLTools (которые идут с книгой). Но всё это удалось победить.
У Шлее есть простой пример, что нужно переопределять в классе QGLWidget.
Ну, и справка с google тоже пригодились для создания двойного буфера и т.п.
« Последнее редактирование: Август 04, 2014, 11:07 от __Heaven__ » Записан
8Observer8
Гость
« Ответ #4 : Август 04, 2014, 11:33 »

Вот такой ещё есть пример: http://www.gamedev.ru/code/articles/OpenGL_Qt4

Примеры из Шлее я разобрал.

Научился загружать кубик из 3D-редактора Blender: http://www.prog.org.ru/index.php?topic=26752.msg194255#msg194255

Физический движок Bullet смог подключить к Qt Creator'у: http://www.prog.org.ru/index.php?topic=26838.msg194636#msg194636

Для меня NeHe и СуперКнига - очень сложные.

Эту тему я перенёс вот сюда: http://www.gamedev.ru/code/forum/?id=191780

В результате обсуждения я решил, что начинать надо с DirectX 11 и C#. А потом постепенно внедрять OpenGL в Qt и Java.

Разработчику нужно расширять кругозор (но при этом не распыляться), чтобы для конкретной задачи выбирать подходящие инструменты!
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Август 04, 2014, 12:02 »

Вот вам примеры 2 и 3 главы из суперкниги (см. аттач), которые я при изучении адаптировал под Qt.
Сама книга не сложная (NeHe, на сколько помню, тоже не особо). Сложной математики в ней нет.
Какой момент вам из суперкниги непонятен?
Записан
8Observer8
Гость
« Ответ #6 : Август 04, 2014, 13:39 »

Есть несколько непоняток вначале. Потом напишу. За примеры спасибо! Ещё не смотрел.

Какое у вас издание? У меня 3-е, на русском. Говорят, что надо читать последнее на английском, потому что оно проще и там новая версия OpenGL

--- Update ---

Во-втором примере ошибка:
Цитировать
D:\Qt\QtOpenGL\_Downloaded\OpenGL_training\chapter2\bounce.cpp:12: error: no matching function for call to 'QString::arg()'
     setWindowTitle(QString("Bounce (build %1)").arg(BUILD));
                                                          ^

--- Update ---

Строку закомментил, пример интересный. Почитаю код. Потом отпишусь Улыбающийся
« Последнее редактирование: Август 04, 2014, 13:43 от 8Observer8 » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Август 04, 2014, 14:01 »

Да, извиняюсь. Пробовал некоторые штучки во второй главе. Ошибки просто нужно закомментить.
Книга у меня 2006г. на русском. Мне проще изучать на русском, чтобы понять концепцию. Естественно, на этой книге я не остановлюсь  Подмигивающий
Записан
8Observer8
Гость
« Ответ #8 : Август 04, 2014, 16:14 »

Лекция 1: http://www.gamedev.ru/code/articles/OpenGL_Qt4
Код (Qt5): https://github.com/8Observer8/Icosahedron

Лекция 2: http://www.gamedev.ru/code/articles/OpenGL_Qt4_part2
Код (Qt5): https://github.com/8Observer8/Animation

Книга "SuperBible", самое свежее шестое издание: http://rutracker.org/forum/viewtopic.php?t=4553108
Код к книге: http://www.openglsuperbible.com/

P.S. Один только способ научиться - руками весь код набирать, до полного автоматизма (выпрямления) Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Август 04, 2014, 16:28 »

Один только способ научиться - руками весь код набирать, до полного автоматизма (выпрямления) Улыбающийся

Куда ж без этого. Так просто не запомнишь  Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #10 : Август 06, 2014, 08:18 »

Почитал я начало шестого издания суперкниги.
Так понимаю, что там рассматривается работа с GLSL, что, как я понимаю, в нынешнее время ценится больше, чем голый OpenGL.
В книге 2006 года используются именно OpenGL как есть. Мне стартовать с неё было проще. Там информация на привычном русском и достаточно всё разжевано. Очень просто понять аспекты рисования. Там функции вызываются напрямую, без компиляции, компоновки и дополнительного изучения языка шейдеров, что, на мой взгляд, удобнее для восприятия. Конечно же, наверное, на практике лучше будет использовать именно GLSL.

Могу ошибаться.
Записан
8Observer8
Гость
« Ответ #11 : Август 07, 2014, 06:39 »

__Heaven__, в 3-ем издании тоже GLSL есть (если не ошибаюсь) ближе к концу книги. Там про шейдеры было написано.

Хочу большой шаг сделать. А именно, освоить хождение по 3D миру. Просто плоскость без текстуры и плавное перемещение камеры вдоль плоскости (с поворотами и возможностью посмотреть вниз и вверх). Вот такой пример есть, но он очень древний: http://pmg.org.ru/nehe/nehe10.htm __Heaven__, какие у вас мысли по этому поводу?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Август 07, 2014, 07:52 »

На этот счет в суперкниге 3изд имеется хороший пример sphereworld, который начинается с 4 главы и наращивается до конца книги
Записан
8Observer8
Гость
« Ответ #13 : Август 07, 2014, 08:13 »

Спасибо! Наверняка он и в 6-й есть Улыбающийся

Я сейчас хочу запустить самый первый пример из 6-й суперкниги. Он на шейдерах. Попробую из книги его набрать. А вот среди файлов с книжными примерами я так и не смог найти его, так как в книге названий примеров нет. А в папках примеры не по главам.

--- Updata ---

Я разобрался. Примеры к книге можно открыть, как "Solution" к Visual C++ 2010 Express Edition. Только для каждого проекта надо открыть "Properties" и в разделе "Linker"->"General" выставить "Enable Incremental Linking" в значение "No (/INCREMENTAL:NO)"

Вот только проблемка есть, что программа быстро завершается и я не могу посмотреть результат. Enty point там: DECLARE_MAIN(alienrain_app)

Как сделать паузу в Visual C++ 2010? Понимаю, что это не касается Qt, но может кто знает. Я на Qt переделаю.
« Последнее редактирование: Август 07, 2014, 09:08 от 8Observer8 » Записан
Bepec
Гость
« Ответ #14 : Август 07, 2014, 08:58 »

Ххы. Сделайте там бесконечный цикл типа QEventLoop.

PS а в VS2010 (Visual STUDIO) можно поставить брейкпоинт и это будет пауза выполнения программы.
Записан
Страниц: [1] 2 3 ... 5   Вверх
  Печать  
 
Перейти в:  


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