Начать с движка графа сцены или напрямую с opengl?

Я профессиональный разработчик, работающий в основном с Java, но в свободное время я люблю экспериментировать с разными языками и библиотеками. Дело в том, что я хочу начать учиться разрабатывать приложения или игры с поддержкой 3D. Существует много движков, но я боюсь, что, используя их напрямую, я не смогу изучить основы 3D-разработки, поскольку они очень высокого уровня.

Должен ли я начать программировать с помощью движка графа сцены, библиотеки, такой как SDL, или сразу перейти к работе с opengl?

Я делаю все разработки для Linux, но я хочу, чтобы вещи, которые я разрабатываю, были кроссплатформенными.


person Per Arneng    schedule 15.08.2009    source источник


Ответы (4)


Я бы начал с простого OpenGl. Сделайте несколько базовых сцен и начните создавать свой собственный «3D-движок». Это, вероятно, будет плохо, так как вы будете учиться и должны будете самостоятельно манипулировать МНОЖЕСТВОМ вещей низкого уровня. Тем не менее, я думаю, это то, чему вы хотите научиться.

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

Вам нужен простой набор инструментов для настройки холста OpenGL. Я рекомендую GLUT, который старый и ОЧЕНЬ ОЧЕНЬ простой. Это поможет вам установить простой экран. Более низкий уровень, чем этот, будет непереносимым, и его создание будет немного болезненным (вызывает Xorg? Вздох...). Многие библиотеки инструментов имеют 3D-холст (QT, SDL и т. д.). Но плюс GLUT в том, что он только создает ваше окно, настраивает некоторые функции и все.

Очень хороший 3D-движок, на который вы, возможно, захотите обратить внимание после знакомства с основами OpenGL, — это Ogre. Он хорошо запрограммирован и прост в использовании.

person Edison Gustavo Muenz    schedule 15.08.2009
comment
хотя я против использования синглтонов, существующих повсюду в Ogre, а также всех файлов конфигурации и плагинов, необходимых для чего-либо. :-\ Но я полностью согласен начать с простого OpenGL. - person Ricket; 21.08.2009
comment
@ Рикет, да, я с тобой согласен. Однако это 3D-движок, ни больше, ни меньше. Вот почему я люблю его для обучения. Это было просто предложение, ведь есть и другие движки, которые тоже могли бы неплохо справиться с этой задачей. - person Edison Gustavo Muenz; 21.08.2009

Я начал с OpenGL. В Интернете доступно множество учебных пособий, которые помимо обучения OpenGL как такового также позволяют изучить множество важных вещей в разработке 3D (игр), таких как соответствующее освещение сцены и основы анимации.

person João Silva    schedule 15.08.2009

Основы 3D-разработки с точки зрения прямого доступа к OpenGL быстро меняются. Приготовьтесь узнавать о новых функциях каждые несколько месяцев. После многих лет застоя за последний год было опубликовано три стандарта OpenGL, каждый из которых содержит важные изменения. Это может быть приятно, но требует много усилий, чтобы следовать.

Если вы просто хотите посмотреть, как это работало долгое время, обратите внимание на спецификацию OpenGL 2.0. Он здесь, чтобы остаться, по крайней мере, еще на несколько лет. OpenGL 3.0 вводит все изменения в отдельный контекст, и NVIDIA взяла на себя обязательство не отказываться от старых функций. Вы не будете конкурентоспособны, но у вас есть стабильная платформа для вашего свободного времени.

Если вы рассматриваете OpenGL как средство для достижения цели, вы можете предпочесть библиотеки более высокого уровня, которые сделают всю грязную работу за вас. На этом же уровне появляются и «другие» основы 3D-графики, а именно векторы, матрицы, кватернионы (и так далее). Вам просто не нужно знать, как эффективно передавать их в GPU. Если вы предпочитаете 3D-графику более высокого уровня, вы можете сосредоточиться на вещах, которые остаются одинаковыми для всех API (OpenGL, OpenGL ES, Direct3D) и технологий (растеризация по сканам, трассировка лучей).

Так что, в конце концов, вам решать, чем вы хотели бы заниматься в свободное время. Оба пути интересны, не существует врожденного «лучшего» пути, если нет фиксированной цели.

person Malte Clasen    schedule 15.08.2009
comment
Спасибо за ответ. Я думаю, это то же самое, что и большинство современных программных технологий. Требуется много времени, чтобы не отставать, но интересно попробовать. - person Per Arneng; 15.08.2009

я могу предложить вам OpenSceneGraph и c++

или, может быть, Delta3D. это библиотека на основе OpenSceneGraph

есть еще Огр, но я им не пользовался..

person ufukgun    schedule 15.08.2009