Четверг, 28 Марта 2024, 22:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Opengl c++
Opengl c++
elianyyfДата: Понедельник, 13 Октября 2014, 22:04 | Сообщение # 1
был не раз
Сейчас нет на сайте
Вообщем прочитал что она как бы складывается из многих библиотек. И собственно вопрос, какие из них использовать? Есть куча уроков, но каждый юзает свое. Как я понял надо сначала подключить общую библиотеку gl.h. Есть ещё всякие glew, glut, glu и т.д. Кто то может разъяснить что именно нужно подключать. На офф сайте написано что glut для управления окном, ввод и вывод. Тут смотрю урок, где человек тоже использует окна, ввод, вывод и использует не глут а glew. И так везде. Каждый что то свое. И нигде не нашел толкового ответа. Игры собираюсь делать в стиле tower defense только 3д, с.м. defense of the grid. Опенгл хватит для таких игр?
На офф сайте не смог даже одной библиотеку скачать. Там где гетстартед, вики статья, где как я понял, сказано что нужно что бы у вас были dll файлы, да и так понятно что они есть.
Может я плохо искал на офф сайте, но честное слово, не нашел ни одной библиотеки .h и описание функций, которые предоставляют эти библиотеки, только уроки.

Кто может в этом всем разобрался, прошу помочь, спасибо.
wcptДата: Понедельник, 13 Октября 2014, 22:25 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
помимо glut можно использовать и glfw. glew использовать придется, если хочешь новые (и не очень) версии гл использовать (если виндовс имеется в виду). Какую "библиотеку" ты не смог скачать? Огл есть в составе виндовс сдк (или так как-то), и в других сдк под соотв. платформу. opengl32.dll вообще входит в состав самой виндовс, по-моему.

Сообщение отредактировал wcpt - Понедельник, 13 Октября 2014, 22:30
XakepДата: Понедельник, 13 Октября 2014, 22:26 | Сообщение # 3
めちゃくちゃちゃ
Сейчас нет на сайте
glew - это кроссплатформенная библиотека для работы с OpenGL
glu - это дополнение к OpenGL, типа быстрого создания разных примитивов.
glut - для создание окон и ввод/вывод, ее использовать не совсетую, лучше использовать glfw - легковесная кроссплатформенная библиотека для создания окон и i/o библиотека, sfml - тоже для этих же целей, но более навороченная, там есть и работа со звуком и работа с джостиками, и рисование графики. SDL - библиотека создалей SFML, но более старая, зато она поддерживается Android (на счет iOs не знаю, наверняка тоже поддерживат)
elianyyfДата: Понедельник, 13 Октября 2014, 22:42 | Сообщение # 4
был не раз
Сейчас нет на сайте
Хорошо, с библиотеками понятно. Я просто не могу понять, что именно использовать, что бы от рисовать карту, которая будет содержать какой то ландшафт, 3д модели, какую то логику самой игры. Я прочитал что вот хочешь делать игры, выбирай или опенгл или директ.
XakepДата: Понедельник, 13 Октября 2014, 22:46 | Сообщение # 5
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата elianyyf ()
Хорошо, с библиотеками понятно. Я просто не могу понять, что именно использовать, что бы от рисовать карту, которая будет содержать какой то ландшафт, 3д модели, какую то логику самой игры. Я прочитал что вот хочешь делать игры, выбирай или опенгл или директ.

если хочешь делать игру, лучше выбери игровой движок (Unity, Unreal Engine, Game Maker Studio, Scirra Construct) для 3D лучше использовать первый два, хотя и для 2д тоже можно было использовать.
elianyyfДата: Понедельник, 13 Октября 2014, 22:51 | Сообщение # 6
был не раз
Сейчас нет на сайте
Движки не хочу использовать. Хочу разобраться сам и писать используя только графические библиотеки. Свою игру я на юнити сделал за 6 дней, но это не интересно, делать все на готовом.
XakepДата: Понедельник, 13 Октября 2014, 22:54 | Сообщение # 7
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата elianyyf ()
Движки не хочу использовать. Хочу разобраться сам и писать используя только графические библиотеки. Свою игру я на юнити сделал за 6 дней, но это не интересно, делать все на готовом.

Попытайся сделать что нибуль стоящее. Нормальные игры не делаются за 6 дней.
elianyyfДата: Понедельник, 13 Октября 2014, 23:01 | Сообщение # 8
был не раз
Сейчас нет на сайте
Тему создал что бы кто то объяснил, как другие люди/фирмы создают полноценные игры используя опенгл, что юзают и т.д. Вы рассказали о библиотеках и на этом спасибо. Но хочется поподробней. Может есть уже такие темы, тогда только ссылки кидайте

Сообщение отредактировал elianyyf - Понедельник, 13 Октября 2014, 23:01
wcptДата: Понедельник, 13 Октября 2014, 23:06 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата elianyyf ()
Я просто не могу понять, что именно использовать, что бы от рисовать карту, которая будет содержать какой то ландшафт, 3д модели, какую то логику самой игры. Я прочитал что вот хочешь делать игры, выбирай или опенгл или директ.
Тебе с самых основ опенгл объяснять надо? Учти, что прежде чем ты "отрисуешь" карту, тебе придётся так много попутно вкурить, что лучше сразу присматривайся к 3д движку. Заранее.


Сообщение отредактировал wcpt - Понедельник, 13 Октября 2014, 23:06
elianyyfДата: Понедельник, 13 Октября 2014, 23:11 | Сообщение # 10
был не раз
Сейчас нет на сайте
На счет "попутно вкурить" это понятно, что сначала начинаешь с основ и т.д. Но я не знаю какие именно библиотеки юзать. Подключать gl.h, glu.h, glfw.h и разбираться? Этого хватить "от рисовать карту", добавить логику и заимпортить модели?
XakepДата: Понедельник, 13 Октября 2014, 23:21 | Сообщение # 11
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата elianyyf ()
Тему создал что бы кто то объяснил, как другие люди/фирмы создают полноценные игры используя опенгл, что юзают и т.д. Вы рассказали о библиотеках и на этом спасибо. Но хочется поподробней. Может есть уже такие темы, тогда только ссылки кидайте

у них большой штат обычно, кто с нуля пишет, все руками пилят, очень хорошо знакомы с математикой и вычислительной геометрией.
Для загрузки моделей хорошая библиотека есть ASSIMP. Если хочешь делать игры на opengl, то для начала придется сделать очень хороший графический движок, что-бы просто картинку рисовал, потом нужно разбираться уже по оптимизациям, потому-что у тебя на больших картах (и не очень) будет резко проседать фпс, если будешь в лоб все рендерить. Можно учить шейдеры, и лучше бы с самого начала все на шейдерах делать, потом проще будет, и тут вообще с графикой ты очень намучаешься, если захочешь написать хороший графический движок, то тут не одна облать, с которой разбиратся придется очень долго, вот тебе парочка: скелетная анимация (для оптимизации придется еще и r2vb использовать), динамическое освещение (например Deffered Shading, который не очень то просто реализуется и через постэффект), статическое освещение (тут можно пойти по 2 путям, либо генерировать карты освещенностей через редакторы, либо писать свой движок, первый вариант будет плох, потому-что тогда нельзя будет учитывать моменты, когда персонаж находится внутри тени, ну и в принципе карта освещенностей не будет влиять на динамические объекты, а со вторым ты намучаешься), ну и конечно нужно комбинировать динамическое и статическое освещение, и опять же оптимизировать все это, если ты не будешь правильно оптимизировать графику, то у тебя сразу же начнет проседать сильно фпс, причем очень сильно. Так же нужно разбираться с инстансингом, узнать что такое псевдо инстансинг, чтобы можно было спокойно рендерить одинаковые объекты одним, или нескольким (вместо нескольо десятков тысяч) вызовами, тебе нужно будет разбираться с частицами, а там за одно и научиться работать нормально с памятью, потому-что если ты будешь постоянно выделять и освобождать память (удаляя и создавая новые частицы), то опять же, начнет сильно проседать фпс, при желании потом можно научиться делать GPU частицы, и еще много чего! И это только графика, потом нужно будет учиться прикручивать физику и создавать движок столкновений (но тут конечно проще, если ты сам будешь писать движок для создания объемных карт освещенностей, то наверняка уже бдуешь знаком с методами оптимизации трассировки лучей, поэтому труда написать свой движок коллизий не составит). Ну и только потом только начать писать игру. Вот и думай, сколько у тебя уйдет на это времени. Лично я лет 6 с этим всем разбирался (если начинать что я только-только начал учить OpenGL), писал свой мега крутой двиг, сам разработал программу для автоматической генерации объемных карт освещенностей, совместил Deffered Shading вместе с этой технологией, но так и не разобрался как оптимизировать отбрасывание теней от динамических источников света (тогда в принципе я уже подзабил на все это), и в конечном же итоге я решил перейти на Unreal Engine 4 и не беспокоиться о графической реализации, и заострить свое внимание на реализации самой игры.

Выводы делай сам, в принципе все это очень полезные знания, и даже если ты не напишешь свой движок, эти знания очень пригодятся в будущем, но чтобы получить эти знания, придется много времени убить, и игру ты еще очень не скоро создашь (если вообще создашь)
wcptДата: Понедельник, 13 Октября 2014, 23:35 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата elianyyf ()
На счет "попутно вкурить" это понятно, что сначала начинаешь с основ и т.д. Но я не знаю какие именно библиотеки юзать. Подключать gl.h, glu.h, glfw.h и разбираться? Этого хватить "от рисовать карту", добавить логику и заимпортить модели?
Для моделей бери assimp, как написали. Не подумай, что мы тут тебя просто так стращаем. Человек, отписавшийся выше, гораздо опытнее меня, и знает, что к чему. А пока ты научишься приемлемо делать что-либо с помощью опенгл, "кроносы" просто возьмут и заредизайнят его (а они это обещали!).


Сообщение отредактировал wcpt - Понедельник, 13 Октября 2014, 23:35
ArchidoДата: Понедельник, 13 Октября 2014, 23:35 | Сообщение # 13
Сэнсэй
Сейчас нет на сайте
Цитата elianyyf ()
Подключать gl.h, glu.h, glfw.h и разбираться? Этого хватить "от рисовать карту", добавить логику и заимпортить модели?

Сюда еще не забудь полгода минимум добавить на изучение, тогда хватит:)


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Понедельник, 13 Октября 2014, 23:36
8Observer8Дата: Воскресенье, 01 Февраля 2015, 22:03 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
elianyyf, у вас что-нибудь получилось? Продвинулись?

Я долго колебался: отвечать или нет... Врядли вам это будет полезно, так как я использую классы обёртки Qt над OpenGL ES (GLES, шейдеры), а вам нужен чистый OpenGL. Но всё же оставлю ссылку, как я рисую: ссылка

А это мой пример: Пример загрузки текстурного куба (Qt, OpenGL ES, Blender, Assimp, diffuse освещение)


Сообщение отредактировал 8Observer8 - Воскресенье, 01 Февраля 2015, 22:04
XakepДата: Воскресенье, 01 Февраля 2015, 22:19 | Сообщение # 15
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата 8Observer8 ()
Врядли вам это будет полезно, так как я использую классы обёртки Qt над OpenGL ES (GLES, шейдеры), а вам нужен чистый OpenGL

да там тоже самое, вообще изменения минимальные, только для OpenGL ES нужно писать как на OpenGL 3 и GLSL 330 примерно, устаревшие фенкции не поддерживаются, ну и у шейдеров нужно точность обязательно указывать, других отличий я пока не видел.
8Observer8Дата: Понедельник, 02 Февраля 2015, 11:27 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Цитата Xakep ()
да там тоже самое, вообще изменения минимальные, только для OpenGL ES нужно писать как на OpenGL 3 и GLSL 330 примерно, устаревшие фенкции не поддерживаются, ну и у шейдеров нужно точность обязательно указывать, других отличий я пока не видел.


Не совсем тоже самое. Я использую Qt классы-обёртки типа: QOpenGLWidget, QOpenGLShaderProgram, QOpenGLShader, QOpenGLTexture, QMatrix4x4, QMatrix3x3. Ещё до кучи можно этих подбросить: OpenGL and OpenGL ES Integration

Правда шейдеры всё равно теже самые. Был у меня однажды спор. Некоторые люди утверждали, что нужно изучать OpenGL без обёрток. Но я остался при своём мнении, так как изучение "чистого" OpenGL для меня не самоцель, а цель - получать результат, как можно быстрее и проще, имея под рукой документацию на классы, того фреймворка, который использую каждый день. Спорные вопросы: стоит ли, например, изучать glBegin/glEnd в самом начале или с шейдеров начинать или использовать ли Qt обёртки или сначала уверенно овладеть "чистым" OpenGL. Я немного ознакомился с glBegin/glEnd, потом со списками рисования, далее чуть-чуть с рисованием с помощью glVertexPointer, glColorPointer, glDrawElements. А теперь только шейдеры, но использую их по минимуму. Рисую без VBO и VAO, а с помощью glDrawArrays. Очень много спорных моментов в жизни. Главное, наверное, практиковаться, а путей, фреймворков, способов рисования, языков и комбинаций инструментов так много! И ведь каждый будет говорить, что его выбор самый лучший. Кто к чему привык, то это и хвалит. Мне кажется, нужно просто делиться своим опытом и никому ничего не доказывать
Форум игроделов » Программирование » C/C++ » Opengl c++
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг