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
согласен с православным путём :) но для этого надо иметь мозги и хорошо понимать как это всё работает чтобы всё учесть

Morganolla 20.11.2009 18:46

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

jimon 20.11.2009 23:14

Ответ: С++ и 3D
 
Morganolla
1) учебник по английскому
2) учебник по линейной алгебре (нужны матрицы, базисы и еще куча всего)
3) http://nehe.gamedev.net/
но стоит запомнить что для OpenGL 3.x (если использовать forward context) все эти примеры нужно переписать, ибо в forward context вырезан весь устаревший функционал, но это скорее просто очистка самого API и вправление рук девелоперов чем вырезание функционала (устаревший функционал и подходы можно юзать как обычно, если не включать foward context)
4) http://www.opengl.org/documentation/specs/
можно сразу скачать спецификацию 3.2, но для начала и 1.5 хватит
но это справка по командам и как они работают

impersonalis 21.11.2009 00:07

Ответ: С++ и 3D
 
Чувствую себя буридановым ослом (

mr.DIMAS 25.11.2009 20:42

Re: С++ и 3D
 
Насчет книжек: оч хорошая книга есть у Фленова "DirectX и C++. Искусство программирования".(DX естественно 9 ) Несмотря на то что в книге практически все про демо сцену, ничто не мешает заюзать те же фишки в играх. Для начинающих как раз.

alcoSHoLiK 25.11.2009 21:42

Ответ: С++ и 3D
 
Все зависит от целей.

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

Если цель - разрабатывать игры, следует поискать готовый движок. Даже взяв чистый API, тот же DirectX, в процессе создания игры формируется самопальный движок. А так как он не был заранее спроектирован как самостоятельный модуль, его вряд ли можно будет эффективно использовать в других проектах. Таким образом либо следует потратить месяц-год-5 лет на написание своего движка, либо взять готовый. Последний пункт рекомендуется.

Если же цель - визуализация какого-либо набора данных (построение графика функции, симуляция физического процесса и т.д.), то есть если цель - разработка некоторого приложения пользовательского или вычислительного характера, частью которой должна быть трехмерная визуализация, то имхо лучше использовать Qt. Это кросс-платформенная библиотека для создания GUI, которая включает в себя функциональность на все случаи жизни, в том числе вывод графики в OpenGL контекст. Да, в данном случае требуется знание OpenGL.

Резюме:
Если надо крутые эффекты для крутой игры, бери двигл, основанный на DirectX. Далеко ходить не надо: недавно Unreal Engine 3 предоставили в свободное пользование всему миру. Правда там не С++, но в для игр самое то.
Если надо рисовать 3Д-картинку как часть работы некоторой проги, причем большие требования к реалистичности не предъявляются, бери Qt.

Это мое личное мнение.

falcon 26.11.2009 20:52

Ответ: С++ и 3D
 
мои пять копеек:
Цитата:

Если твоя цель - разобраться в тонкостях 3Д-графики
в этом случае лучше взять обе книги Андре Ламота, и внимательно изучить их :)
только сегодня сдал рейтрейсер на конференции в универе ))
пусть он кустарный, но пока его писал, открыл для себя очень много тонокстей.. написав своё, можн прочувствовать принципы работы гапи, и движков... эт имхо нужно изначально...
а вот дальше уже можно браться за всё остальное (статьи, эффекты, движки..)

mr.DIMAS 26.11.2009 21:21

Re: С++ и 3D
 
Цитата:

в этом случае лучше взять обе книги Андре Ламота, и внимательно изучить их :)
ламот отжигает по полной! была у меня шиза написать прогу которая будет рисовать напрямую в память( была у меня тогда неприязнь к ОГЛ'у и ДХ ), стал читать его книжку чуть мозг не взорвался( просто потому что не знал тогда асма ). Если полностью прочитать его две книжки можно заработать геморой мозга :-D :-D

falcon 27.11.2009 00:27

Ответ: С++ и 3D
 
зря ты так.
пишет он на С (программирование 3д- с++... хотя в с-стайле)
первая часть - кодинг 2д... больше ориентирован именно на разработку ИГР... т.е. как делать ИГРЫ..
а во второй часте - общии принцыпы 3д графики... фактически он свой софтварный двиг пишет... что б не использовались "аппаратные костыли"..
описываются куча интересных сфер..
мне кстати оч помогло для написания рейтрейсера :)
для меня покрайней мере основные принцыпы работы графического конвеера гемороем точно быть не могут...
(ну да.. ламот на асме писал мат.часть двига... но эт малая доля всего повествования )

impersonalis 27.11.2009 00:31

Ответ: С++ и 3D
 
Ладна - давайте погворим о движках? Кто что?
Вот Qt похоже мне подходит (но напряагет гапи от ОГЛ, в свете сказанного ранее).
Помнится ДядяДима всё с Ирлихтом бегал.

Tadeus 27.11.2009 00:49

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

Сообщение от mr.DIMAS (Сообщение 127061)
ламот отжигает по полной! была у меня шиза написать прогу которая будет рисовать напрямую в память( была у меня тогда неприязнь к ОГЛ'у и ДХ ), стал читать его книжку чуть мозг не взорвался( просто потому что не знал тогда асма ). Если полностью прочитать его две книжки можно заработать геморой мозга :-D :-D

Видимо, у меня геморой мозга :(

jimon 27.11.2009 01:18

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

Помнится ДядяДима всё с Ирлихтом бегал.
бегал, но бросил, двиг чисто для изучения подойдет, что-то большое на нём писать смысла нету

alcoSHoLiK 27.11.2009 03:06

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

Сообщение от impersonalis (Сообщение 127083)
Вот Qt похоже мне подходит (но напряагет гапи от ОГЛ, в свете сказанного ранее).

Значит игры отпадают?)
В этом случае можно конкретно визуализацию написать на движке в виде отдельного приложения и запускать его как дочерний процесс основного окна приложения (в Qt делается легко; наверное, в других гуишных либах тоже есть такая возможность). Остается в силе рекомендация об использовании движка, основанного на DX. OGRE и Irrlicht на слуху, однако есть еще XNA (C#).

Постановка вопроса немного ограничивает простор для рекомендаций, так как хочется подсказать то, что лучше всего подойдет для выполнения преследуемой цели, но оно не обязательно вписывается в рамки "С++ и 3D".

Если же надо, что графика отображалась непосредственно в окне, как один из его элементов, тогда "привет, OpenGL"! :)

Есть конечно вариант написать вин-приложение (Win32 API/.NET/MFC) и использовать в нем контекст DX как элемент окна, однако гемора будет не меньше.

Без конкретизации автором темы преследуемых целей ничего более толкового на ум не приходит.

impersonalis 27.11.2009 03:08

Ответ: С++ и 3D
 
казуально "мне нужен блитц3д на С++" =)

Knightmare 27.11.2009 03:10

Ответ: С++ и 3D
 
Если юзать Qt из-под VS то DX прикрутить к нему - не вопрос. В любой контрол можно рисовать. Хотя на кнопку. Если юзать Qt Creator - сложнее, надо будет пережимать статик либы DX. Но опять-же - особых проблем не вижу. Кроме того что это уже не крос-платформ будет (но про это я тоже уже писал).

alcoSHoLiK 27.11.2009 03:11

Ответ: С++ и 3D
 
http://www.blitzbasic.com/Products/blitz3dsdk.php
Весь функционал блица, основанный на ДиректХ 7, в виде динамической библиотеки. Уже давно как крякнутый, только надо поискать.

alcoSHoLiK 27.11.2009 03:13

Ответ: С++ и 3D
 
Knightmare
Qt Creator лучше не юзать) Единственный его плюс в том, что он автоматом генерит мейкфайлы. А этот процесс можно автоматизировать батником.

Knightmare 27.11.2009 03:31

Ответ: С++ и 3D
 
Ну я и не говорю что его надо юзать. Вообще экспериментальным путем доказано, что для клепания всяких гуевин под винду рулит C# Все что есть для С++ - костыли.
Просто отметил что есть возможность завести DX и под ним (ибо компилятор mingw).

impersonalis 27.11.2009 03:33

Ответ: С++ и 3D
 
импер ещё думает. так что продолжаем

johnk 27.11.2009 03:36

Ответ: С++ и 3D
 
Имп троллит, имхо :)

Hurrit 27.11.2009 12:35

Ответ: С++ и 3D
 
Импер, тебе ведь нужен блитц в си++, может используешь xors3d для си++? Я попользовался, некоторые родные примеры хорса для блитца перевел, мне лично понравилось. Попробуй

impersonalis 27.11.2009 14:20

Ответ: С++ и 3D
 
Он платный =(

johnk 27.11.2009 14:31

Ответ: С++ и 3D
 
Попробуй G3D?

mr.DIMAS 01.12.2009 12:57

Re: С++ и 3D
 
http://netlib.narod.ru/library/book0032/toc.htm вот еще отличный учебник по DX9 там рассмотрено все: начиная от графического конвейера заканчивая такой насущной фигней как камера, и шейдеры. в общем книга оч интересная

Morganolla 05.01.2010 02:13

Ответ: С++ и 3D
 
Натолкнулся на довольно интересный бесплатный движок - Panda3D! http://www.panda3d.org Никто не крутил? По моему он заслуживает внимания - довольно прост и картинка не плохая...

Praedo 05.01.2010 12:20

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

Сообщение от Morganolla
и картинка не плохая...

Ты меня убил :-D

Цитата:

Сообщение от Википедии
Panda3D предназначен для разработки игр на Python, но возможно также написание программ на С++.

Слово "возможно" меня напрягает :-D

По поводу Panda3D вот-с.

Сам использую Xors3D. ИМХО очень красиво смотрится на нём код. После реализации всего классами (Ивентарь - класс, персонаж - класс, и т.п.) всё смотрится как будто так и было изначально в С++.

Morganolla 05.01.2010 13:34

Ответ: С++ и 3D
 
Так ведь Xors3D ведь платный и вроде не доделаный...

ABTOMAT 05.01.2010 23:20

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

Сообщение от mr.DIMAS (Сообщение 127806)
http://netlib.narod.ru/library/book0032/toc.htm вот еще отличный учебник по DX9 там рассмотрено все: начиная от графического конвейера заканчивая такой насущной фигней как камера, и шейдеры. в общем книга оч интересная

Ого, да ещё и с матаном! :super:Очень было бы здорово прогать это параллельно с линалом в универе, это вносит дополнительную наглядность. (Жаль, что уже кончили изучать тот раздел)
Обязательно почитаю, хоть и отошёл от дел 3Дшных.
Цитата:

Так ведь Xors3D ведь платный и вроде не доделаный...
Если голова на месте, то вполне юзабельный (по своему опыту говорю)

Randomize 20.01.2010 01:08

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

Сообщение от Morganolla (Сообщение 132243)
Натолкнулся на довольно интересный бесплатный движок - Panda3D! http://www.panda3d.org Никто не крутил? По моему он заслуживает внимания - довольно прост и картинка не плохая...

Покрутил немножко, быстро разонравился. Вопервых слово "шустрый" не про него. Непонравилось, что в нём львиная доля всевозможных сторонних либ, что для казуалок критично.

FDsagizi 20.01.2010 21:46

Ответ: С++ и 3D
 
Внимание - О ЧУДО - Которое не стоит денег, не требует даже задумываться о ДХ или ГЛ, изначально идет как Игровой Рендер движек! Если юзать CG шейдеры то будет работать и с ДХ и с ГЛ, имеет экспортеры моделей и анимации из всех поп. редакторов, умеет грузить текстуры любого Формата, много поточность из коробки, отличное вменяемое большое рус. комьюнити, Винда, Макось, Линукс! Айпод! Проверен и чертовски стабилен!

Direct3D9
Direct3D10
Direct3D11
GL
GLES

Че хочешь!

Хороший ООП в нутри и все документировано и понятно, куча сеплов и плагинов. Не мало ком. законченых проектов!

Ogre 3D

H@NON 20.01.2010 21:55

Ответ: С++ и 3D
 
сцуко агитатор)) пошел внедряться в дебри)


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

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