forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   С++ и 3D (http://forum.boolean.name/showthread.php?t=10343)

impersonalis 19.11.2009 12:34

С++ и 3D
 
сабж.
С чего лучше начать?
С чистого OpenGL? С движков (каких?)?
Посоветуйте. /с С++ знаком/

Knightmare 19.11.2009 15:38

Ответ: С++ и 3D
 
Для каких целей 3D графика? Если игры - DX. OGL не нужен, ибо под виндой - в топку, на линух и мак ось игры не нужны, на консолях его нет, и остаются только мобильные девайсы. Если доя написания какой-либо визуализации которая возможно будет запускаться на линухе и других системах - то да, OGL. Сразу по DX - D3DX лучше не юзать (за иключением компилятора шейдеров, и то, можно при сборке проекта их комплировать).

impersonalis 19.11.2009 17:01

Ответ: С++ и 3D
 
Ух.. А можно развернуть описание "под виндой - в топку"?
Конкертного применения пока не планирую. Просто, невсегда использование Blitz оправдано. Возможные назанчения: игры (не особо требовательные к ресурсам, тут больше уопр будет на функционал С++ с его ООП и прочимим вкусностями), визуализация (здесь всё размыто, но, веротяно, к ресусрам совсем не требовательно (типа off-line render)). Исходя из описанного, хотелось бы овладеть чем-то максимлаьно функциоальным\переносимым.

Knightmare 19.11.2009 17:13

Ответ: С++ и 3D
 
С виндой все просто. Мелкософт всячески притесняет конкурирующий GAPI, отсюда лезут всякие страшные глюки, особенно это касается их дрйверов на видео. Там с OGL совсем плохо. Так же есть большие траблы на Radeo'ах, они как-то пофигически относятся к OGL, а на Intel'ах оно вообще не работает. Ну местами вроде бегает. На топовых вроде даже шейдеры таки запилили. А вот DX на них пашет полностью, вплоть до SM 4.0. Таким образом игры под винду писать более рационально с использованием DX, что повысит совместимость с железом (если казуалка - очень критично, на DX все заведется без проблем и на офисных, а вот с OGL - большой вопрос). Кроме того DX движок гораздо легче портировать на XBox360, но это я так думаю тебя не особо волнует. Кроме того DX объектно-ориентированный, но это уже кому как больше нравится. OGL сейчас практически для игр не используется (не считая отдельных товарищей, но вроде Кармак и тот на DX переполз уже, хотя есть мнение что использование иим OGL в предыдущих проектах было вызвано тем, что игры те были и под линух). Используют его в большинстве своем товарищи пишущие гипотетически мультиплатформенные движки, которые типа и под линухом пашут и под маком до кучи, однако и ослу понятно что там игры не востребованы и профита разработка под эти платформы не принесет (ну мак ось - может быть, но там не такой большой чтобы стоило заморачиваться), разве что just4fun.
Единственный пожалуй плюс OGL - через расширения можно иметь 4 и 5 SM даже на ХР. Но всем пох как водится.
З.Ы. Юзающим OGL и любящим выставлять фишкой то, что если железо что-то не умеет оно эмулируется в софтваре - учите матчасть, в DX есть софтварный рендер, идущий в комплекте с SDK.

Morganolla 19.11.2009 18:38

Ответ: С++ и 3D
 
По моему лучше все же начать с простого движка. Потому что ОГЛ довольно сложная штука. А то что сейчас мало игрушек под Линух, то это не значит, что их не будет много через год-другой... ИМХО. Сейчас в Линухе быстро развиваются мультимедийные приложения - музыка, звук, графика... и ничто не мешает делать там серьезные игрушки.

NitE 19.11.2009 18:39

Ответ: С++ и 3D
 
Цитата:

и ничто не мешает делать там серьезные игрушки.
жадность мешает...

Knightmare 19.11.2009 18:41

Ответ: С++ и 3D
 
Цитата:

Сообщение от Morganolla (Сообщение 125596)
По моему лучше все же начать с простого движка. Потому что ОГЛ довольно сложная штука. А то что сейчас мало игрушек под Линух, то это не значит, что их не будет много через год-другой... ИМХО. Сейчас в Линухе быстро развиваются мультимедийные приложения - музыка, звук, графика... и ничто не мешает делать там серьезные игрушки.

Ога. Щаз. Уже лет 5 наверно как "вот-вот все пересядут на линух и начнут игры штамповать пачками".

impersonalis 19.11.2009 23:00

Ответ: С++ и 3D
 
Так. Спасибо за детальный ответ.
Какую кто посветует литературу для начала под ДХ?

Knightmare 19.11.2009 23:05

Ответ: С++ и 3D
 
DirectX SDK (документация и примеры). Лучше ничего нет. Еще http://netlib.narod.ru - тут вроде что-то есть (однако не стоит воспринимать это все серьезно, у того же Френка Луны есть книжка по анимации в DX например. Принципы описаны отлично, но реализация - жуткая ересь).

jimon 19.11.2009 23:52

Ответ: С++ и 3D
 
(выводы из чата с Имером в асе)

DirectX стабилен только потому что его выпустят, разработчики видеокарт драйвера отладят за пару месяцев и всё, на 2-5 лет вперёд стоит стабильная монолитная система, где есть определённый набор фич нужных для актуальной разработки на момент выпуска, потому всё работает из коробки ибо уже отладили месяцами ранее
при выпуске новой версии DirectX зачастую всё меняется в корне и новая версия просто обратно не совместима со старой, пиши всё с нуля

OpenGL развивается с такой же скоростью, как в мозги инженеров приходят новые идеи, позавчера придумал, вчера написал расширение, сегодня имплементировал в драйвер и уже юзаешь, не нужно ждать 4 года для выпуска новой ОС и нового DirectX, юзаешь то что нужно сразу
но поскольку в драйвер изначально не закладывают весь функционал что может видеокарта, да и если закладывают то он не всегда работает правильно, плюс еще постоянно появляется новый функционал (который зачастую даже и не требует менять железо) то драйвера обновляются постоянно, сродни обновлений антивирусов
юзеры ленивы в обновлениях драйверов, потому на разных компах с одинаковым железом opengl может иметь совершенно разный функционал

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

как работает видеокарта, что такое шейдера и основы 3д графики я описал тут http://blitzmax.ru/index.php?topic=1440.0

SBJoker 20.11.2009 01:44

Ответ: С++ и 3D
 
А теперь дядя дима откроет википедию на DirectX и почитает обратную совместимость со сколькими поколениями DirectX, мелкософт гарантирует.
И не будет писать ересь про, в новой версии всё в корне меняется. Новое добавляется но старое остаётся.

Knightmare 20.11.2009 01:46

Ответ: С++ и 3D
 
Полное изменение постигло лишь 10 версию DX. Причина тому - в топку был отправлен весь FFP функционал (теперь только шейдеры). Туда ему и дорога.
З.Ы. 7, 8, 9 версии - код переносился почти без изменений.

jimon 20.11.2009 02:12

Ответ: С++ и 3D
 
SBJoker
Knightmare
перенос кода с 7,8 на 9 возможен с минимальными изменениями, а вот можно ли сделать 9 версию опционально не делая два полностью разных рендера ? те чтобы иметь шейдера опционально, но при этом программа работала с системой где стоит directx 7
да и имхо мелкософту уже пофиг на 7,8,9 версии, с выпуска 9 версии уже 5 лет прошло

в прочем OpenGL тоже свинью подсунул, OpenGL ES 2.0 обратно не совместим с OpenGL ES 1.1, типа или всё изначально на шейдерах или рисуй вообще без них, так что без двух раздельных рендеров тут не обойтись

Knightmare 20.11.2009 02:14

Ответ: С++ и 3D
 
Я вроде написал - версии 7, 8, 9 - совместимость кода отличная. И туда и сюда можно переносить, с незначительными правками в API. Ну и так конечно на DX7 шейдеров вообще нет и все такое, так что тоже все не портанешь, но FFP - без проблем. С DX10 это уже не действует. Ибо как я уже говорил почти полностью поменялся API. В тоже время DX10<->DX11 не будет иметь больших проблем. Грубо говоря. Что-то было до DX10. Это одно. Все что после - совсем другое.
Так же напомню, что от OGL 3.0 ждали кардинальной смены API. Однако нифига подобного не произошло. А та бы была таже фигня что и с DX.
И вообще. Все эти перенести код куды-сюды и т.п. часто является полной фигней ибо не используется. Частично - да. Но для этого и не нужна полная совместимость GAPI. Что-то взял со старого, подправил под новое, ПРОФИТ!
З.Ы. А православный путь - тотальное переписывания GAPI layer под новый API. С учетом всех его фишек и т.п.

jimon 20.11.2009 02:23

Ответ: С++ и 3D
 
Knightmare
согласен с православным путём :) но для этого надо иметь мозги и хорошо понимать как это всё работает чтобы всё учесть


Часовой пояс GMT +4, время: 22:34.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot