OpenGL против OGRE: что лучше для новичка? [закрыто]

10

Я заинтересован в разработке игр и обладаю хорошими навыками программирования на C / C ++. Я пробовал OGRE раньше, и мне любопытно, должен ли я изучить OGRE или OpenGL в качестве отправной точки.

Насколько я понимаю, OGRE - это оболочка для OpenGL и DirectX. Итак, предполагается, что я изучаю OGRE, нужно ли мне еще изучать OpenGL для разработки игры?

Кроме того, может кто-нибудь указать мне хороший учебник для OpenGL? Я обнаружил, что OGRE хорошо документирован (даже поставляется с дистрибутивом!), Но для OpenGL большинство учебных пособий, которые я посетил, устарели.

Songbreaker
источник
Если вы совершенно новичок в программировании трехмерной графики, я бы попытался понять, как сначала работают низкоуровневые API (OpenGL или D3D, это не имеет значения), а затем переключиться на готовый графический движок, такой как как OGRE, чтобы вы могли сосредоточиться на своем приложении / игре, а не на рендеринге дизайна / разработки движка.
drxzcl
1
Сначала я бы пошел на 2D, а не на 3D.
Коммунистическая утка
1
Большинство 2D не просто "3D без Y" и имеют свои собственные идиомы и приемы, я не уверен, что использование боковой дорожки в 2D было бы хорошо для кого-то с уже "хорошим c / c ++".
Патрик Хьюз
Почему этот вопрос не конструктивен?
Songbreaker

Ответы:

13

Ogre действительно является оберткой для OpenGL, однако идея такой обертки заключается в том, что вам не нужно беспокоиться о тонкостях OpenGL. Конечно, это поможет немного узнать об OpenGL, но Ogre скроет для вас много неприятных деталей.

Я бы сказал, что Ogre, возможно, легче изучать, чем OpenGL, или, по крайней мере, он даст вам интересные результаты быстрее. Конечно, это полностью зависит от того, что вы хотели бы сделать, чтобы оценить, стоит ли изучать OpenGL.

Что касается учебных пособий по OpenGL, да, большинство из них довольно устарели, однако спецификация продвигается не очень быстро, поэтому многие из этих старых учебных пособий по-прежнему применимы к большей части OpenGL.

Несколько из моих любимых:

Рой Т.
источник
28
ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, прекратите посылать людей в NeHe. Уроки хороши, но невероятно устарели. Дни OpenGL 1.x давно прошли, давайте постараемся не нанести вред следующему поколению графических программистов прямо из ворот!
drxzcl
5
См. «Введение в современный OpenGL»: duriansoftware.com/joe/…
drxzcl
1
@Ranieri Я абсолютно, очень сильно согласен. Сайт оставался неизменным в течение многих лет, и теперь, когда OpenGL довольно сильно изменился за последние пару лет, его действительно не следует поощрять. @Songbreaker, пожалуйста, запомните это и подумайте о том, чтобы избегать уроков NeHe или, по крайней мере, брать их с солью. Фиксированный трубопровод давно ушел.
Ricket
1
@ Ranieri, @ Рикет: Я абсолютно, очень сильно не согласен. Рассмотрим кривую обучения OpenGL 4.x для новичка, который совершенно не знаком с графическим программированием и в свободное время поднимает SDK в стороне, без каких-либо инструкций. Как там документация для OpenGL 4.x? Смотрите мой пост для более подробной информации.
Эндрю Расмуссен
4
@Songbreaker: я пытаюсь. Я оставлю вам решать, хороши они или нет.
Николь Болас
17

OpenGL! Да, я пока открыто не согласен со всеми на этой доске.

Огре это беспорядок. Кривая обучения крутая. Да, у них есть несколько хороших уроков, но выйти за пределы этих уроков и заниматься своими делами ОЧЕНЬ сложно. Я рассчитывал потратить три недели, прежде чем вы сможете настроить и работать с OGRE, проработать руководства и выяснить, что делать дальше. В OGRE нет ничего намного лучше или проще, чем OpenGL. Если вы хороший программист на C, как вы утверждали, и вы понимаете свои указатели / массивы / функции, OpenGL будет таким же простым, если не проще.

Вот почему я настоятельно рекомендую начать с OpenGL. OpenGL заставит вас изучить все основы графики. Это намного интереснее, так как вы на самом деле поймете, что происходит на заднем плане. И ДА начать с учебников NeHe. Да, они 1.x, что очень устарело (это для вас, Раньери), но переход на OpenGL 4.x слишком крутой курс обучения.

Начните с непосредственного режима в 1.x (glBegin, glEnd), затем изучите Vertex Arrays. Если хотите, поиграйте со списками отображения, просто чтобы узнать. Затем двигайтесь к объектам буфера вершин. Тогда узнайте о шейдерах. Каждый из этих переходов очень прост, и есть много отличных обучающих программ онлайн. VBO находятся в ядре 4.1, так что к тому времени, когда вы это сделаете, вы уже не будете изучать устаревший материал, и вам будет гораздо легче получить его, начав с материала 1.x.

Кроме того, если вы когда-нибудь захотите сделать карьеру в разработке игр, никто не будет вас нанимать, потому что вы можете создать кубик с готовой библиотеки. Они будут нанимать вас, потому что вы понимаете, что происходит на самом низком уровне, и вы можете принимать решения по проектированию на основе этих ценных знаний.

Ссылки: Я был там, где ты был. Я провел месяц в OGRE, неделю пробовал Irrlicht, неделю пробовал Horde3d, два дня играл с DirectX и месяц играл с OpenGL. После месяца с OGRE я едва мог выйти за рамки учебников. После месяца работы с OpenGL у меня был персонаж, бегающий по миру майнкрафтов, рендеривший 260 000 текстурированных кубов на кадр с 700+ частотой кадров.

Андрей Расмуссен
источник
Я не согласен с вашими утверждениями, а также не думаю, что опыт, который вы раскрываете, имеет какое-то значение. И Ogre, и OGL требуют, чтобы у вас были базовые знания о том, как разговаривать с графической картой, что не означает, что вы должны знать OGL или DX, но в основном вы должны знать, что они могут делать. В этот момент Ogre добавляет слои, которые начинающему пользователю потребуются месяцы для правильной настройки, и которые вы не сможете увидеть на примере, который вы настроили за месяц. Всегда хорошо знать OGL, но увольнение с Ogre из-за вашего опыта ничего не значит.
Klaim
1
Нет, OGRE на самом деле не требует, чтобы вы знали, как разговаривать с видеокартой - в этом суть. Кроме того, OGRE - это не просто оболочка для графического API, это также менеджер сцен, загрузчик моделей и т. Д.
Jarrett
5

Короткий ответ? OGRE.

Длинный ответ? OGRE - это оболочка над OpenGL, поэтому вам придется выполнять намного меньше работы. Вам не нужно сильно беспокоиться об отправке данных в графический процессор или связывание шейдеров, или о сортировке вершин на низком уровне. Использовать OGRE намного быстрее, чем использовать OpenGL для производства, и есть вероятность, что ваш код будет (очень незначительно) также быстрее.

Если вы заинтересованы в разработке движка, используйте GL. Иначе, используйте OGRE. И я, наверное, все равно начну с OGRE.

Коммунистическая утка
источник
3

Знание компьютерной графики не требуется для разработки игр. Это необходимо, чтобы стать графическим программистом или частью команды разработчиков Dev в игровой компании (личное примечание: это лучшее развлечение во всей разработке игры :)).

Если вы не хотите становиться инженером рендеринга, вам, вероятно, не нужно изучать весь openGL или DX для разработки игр.

NotaBene
источник
2

Я бы сказал, что ни один из них не является лучшим для новичка, но тогда «лучший» - это относительный термин, который зависит от того, что именно вы хотите получить. Например, если вы хотите изучать программирование 3D-графики, чтобы получить навыки, которые вы могли бы использовать, чтобы получить работу программиста по 3D-графике для игровой компании, тогда этот выбор имеет смысл. С этой целью вы также можете посмотреть на DirectX.

Однако, если у вас есть какие-либо другие цели, я бы порекомендовал рассмотреть другие варианты. Для начала, хотя из вашего вопроса можно было бы предположить, что вы хотите участвовать в разработке игр в качестве программиста, вы на самом деле не указали это. Как написание графического движка на OpenGL, так и построение на базе Ogre определенно предназначены для опытных программистов.

jhocking
источник