| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > OpenGL или DirectX |
| Автор: Anarhist 11.2.2006, 15:03 |
| Я очень люблю OpenGL и считаю что если постараться то можно сдедать программы куда покруче чем с использаванием DirectX, а как вы считайте. |
| Автор: Snowy 11.2.2006, 15:27 |
| Это уже религиозные войны получаются. Смысл этого топика? |
| Автор: Anarhist 11.2.2006, 17:31 |
| Мне просто интнресно, что больше народу нравится OpenGL или DirectX. |
| Автор: Simplex 11.2.2006, 18:07 |
| Anarhist >> Я очень люблю OpenGL... Мне GL тоже нравиться больше DX,.. но везде есть свои +/- |
| Автор: HackMan 13.2.2006, 00:08 |
| ИМХО OpenGL лучше, а DirectX проще |
| Автор: cardinal 13.2.2006, 00:37 |
| OpenGL, а будущее думаю за OpenRT, см. тут: http://www.openrt.de/ |
| Автор: CaNIBaLchik 13.2.2006, 08:54 |
| DirectX круче в плане решение локальных задачь DirectSound например легче цепляется к событиям приложения |
| Автор: Mu57Di3 27.2.2006, 15:43 |
| Open GL однозначно лучше программировать проще. Нет гимора со всякими левыми оьектами. Быстрее работает, кроссплатворменный. |
| Автор: MaXL 3.3.2006, 10:24 |
| OpenGL лучше, но мне кажется что с помощью DirectX легче...может потому что я его начал первым учить.. |
| Автор: Exception 3.3.2006, 17:44 |
| Что значит "нет гемора с этими объектами"? Может, тогда лучше вообще вручную все на экран выводить? И драйвера к мониторам самим писать OpenGL навязывает процедурный стиль программирования, а DirectX - объектно-ориентированный. ИМХО, этим все сказано. P.S. Мне не нравится реализация DirectX в виде библиотеки COM, а поэтому под DirectX я понимаю Managed DirectX for .NET. |
| Автор: mr.DUDA 4.3.2006, 10:59 | ||
| Да, только вот требования там нехилые:
И рендерит всего-то 2 миллиона лучей в секунду, это даже меньше чем заявляемое количество полигонов в сцене (там счёт идёт на миллионы и миллиарды). |
| Автор: Void 4.3.2006, 18:13 |
| mr.DUDA, главное, что процесс легко распараллеливаемый, а значит, в обозримом будущем возможно создание GPU с аппаратным ускорением ray tracing, достаточным для real-time 3D. Сколько там GFLOPS'ов выдают сегодняшние GPU? Ни одна однопроцессорная машина общего назначения близко не подберется. Сделают чип со 128 конвейерами по 30 нм техпроцессу и будет нам счастье |
| Автор: Void 5.3.2006, 16:24 | ||
А кто надеется? |
| Автор: mr.DUDA 10.3.2006, 13:52 | ||
Это так кажется. Нвидия и асусы оправдывают вложенные в research бабки, выпуская всё более быстрое по герцам железо, а программеру в любом случае приходится оптимизировать алгоритмы, т.к. "в лоб" ни одна задача нигде и никогда не решается, хотя... есть тот же 3D Studio, в котором уже давно есть всё о чём только можно мечтать - но не в realtime ! З.Ы. а вообще, наблюдается тенденция к перекладыванию трудоёмких алгоритмов рендеринга с плеч CPU на хрупкие плечи пиксельных/вершинных конвейеров GPU. Такое впечатление, что пройдёт пара-тройка лет - и развитие CPU-based 3D API либо остановится совсем, либо будет идти ооочень мелкими шажками -- какая тогда разница, что вы используете, если 80% алгоритма реализовано на микропрограмме, исполняемой непосредственно на графическом процессоре видеокарты |
| Автор: Sun 10.3.2006, 17:50 |
| OpenGL лучше тем что это открытый код, который работает под все возможные платформы. Direct3D и DirectDraw - черные ящики - закрытый нестандарт. Не удивлюсь если большая часть кода Direct3D - это перепиленая OpenGL. |
| Автор: DENNN 10.3.2006, 18:01 | ||
Не надо говорить за всех.... |
| Автор: Coocky 10.3.2006, 18:07 |
| "Желе" вроде как проще, потому что Direct-это есть СОМ. Но..Многие библиотеки упрощают работу именно с DirectX. Так что вопрос как палка о двух концах |
| Автор: Void 3.4.2006, 00:16 |
| Думаю, все помнят баталии по поводу поддержки OpenGL в Windows Longhorn/Vista. И как-то незаметно (для меня по крайней мере) прошла новость о том, что спорам конец и OpenGL в Vista будет совместима с новым десктопом. http://blogs.msdn.com/kamvedbrat/archive/2006/02/22/537624.aspx (линк на этот блог есть в новостях на OpenGL.org) Кому как, а меня этот факт весьма радует |
| Автор: redona 3.4.2006, 16:37 |
| по мне и то и то нужно, взависимости от ситуаций |
| Автор: Ch0bits 3.4.2006, 18:42 |
| На самом деле удобней всех Managed DirectX. |
| Автор: mr.DUDA 3.4.2006, 23:11 |
| Ch0bits, ООП не всегда хорош. Как только начинается реальное 3D-приложение (с его нагрузками), тут и заканчивается ООП |
| Автор: OneFourth 19.12.2006, 01:29 |
| И все-таки несмотря на кроссплатформенность и простоту "желе" большинство игровых проектов пишутся имено на директе... |
| Автор: NightmareZ 19.12.2006, 03:08 |
| Правильнее уж говорить, что лучше OpenGL или Direct3D..... DirectX - не только графика. В этом случае - те же яйца, только в профиль. И пишу и под то и под то. Принципиальной разницы не вижу. |
| Автор: mr.DUDA 21.12.2006, 22:42 |
| Лучше всех - XNA ! |
| Автор: WERITAS 31.12.2006, 13:08 | ||
Он проиграл эту войну. Десятый DirectX будет чуть ли не революционным. Желе ооочень слабо и медленно развивается, продукт M$' а ему никогда скорей всего уже не догнать. |
| Автор: PoloS 11.1.2007, 20:43 | ||||
OpenGL не умрет как минимум потому, что он используется в научных целях. Все кластеры и другие супер-компьютеры работают под unix семейством, а там балом правит OGL, а M$ еще не скоро в эту область сунут свой нос. |
| Автор: Gregorian 11.1.2007, 21:53 |
| OpenGL не работает под вистой! |
| Автор: Mayk 11.1.2007, 21:54 |
DirectX не работет под [почти любая ось] |
| Автор: WERITAS 11.1.2007, 21:59 | ||
Угу, Gl почти (!) только для линуха и нужен. |
| Автор: Void 11.1.2007, 22:12 |
Посмотри, пожалуйста, на http://forum.vingrad.ru/index.php?showtopic=83443&view=findpost&p=691467 вверх. |
| Автор: $tatic 12.1.2007, 11:29 | ||
Напиши, плиз - что же такого революционного дает DirectX 10 по сравнению с OpenGL. Геометрические шейдеры не брать - они и в OpenGL поддерживаются (расширение GL_EXT_GEOMETRY_SHADER4). Унифицированные шейдеры скорее всего тоже, правда их только ATI реализовала. |
| Автор: WERITAS 12.1.2007, 21:34 | ||
$tatic
В DX они поддерживаются железобетонно. Так язык-то (или профиль? Не знаю как сказать точнее, чтобы вы меня поняли) - GLSL - под него не заточен! Напишите плизз ссылку, где написанно, что геометрические шейдеры поддерживаются в OpenGL (как-то мне в это слабо верится, может быть просто наперед зарезервировали это расширение и все). IMHO работать с расширениями неудобно, ведь это надо из dll вытягивать адреса функций, чтобы потом вызывать их самому. Это, конечно, избавляет от скачки 250-мегабайтного SDK DirectX'а, но ведь в нем зато есть и help и примеры... ) P.S. Сразу скажу, что я давно не программировал в OpenGL, не работал с расширениями. У мну есть OGRE, которому на все это глубоко наплевать P.P.S. Непринципиально на чем кодить (DX, GL). Главное - результат, а то, как вы его достигли, - личное дело каждого (IMHO). Я его достигаю через DX. Уметь надо на всем =) Но, если для случая писать под Виндовс, то лучше DX не найти. |
| Автор: mr.DUDA 13.1.2007, 12:59 |
| А умеет ли OpenGL делать geometry instancing ? В десятом директе это умеет делать DrawInstanced / DrawIndexedInstanced. И примерчик есть - (SDK root)\Samples\C++\Direct3D10\Instancing10, куча островов с тоннами травы и мегатоннами листьев на деревьях. |
| Автор: $tatic 13.1.2007, 14:00 | ||
http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt |
| Автор: mr.DUDA 15.1.2007, 12:17 |
Для ATI-шных карт будет либо своё отдельное расширение, либо реализация расширения от NVidia для своих видеокарт ? Походу, API D3D10 не завязан на конкретную аппаратную реализацию. |
| Автор: $tatic 15.1.2007, 15:46 | ||
| mr.DUDA, мне кажется, что раз расширение имеет префикс EXT (т.е. реализованное несколькими разработчиками), то ATI и NVIDIA уже обо всем договорились Вообще вот нашел список новых расширений для GeForce 8800:
Если внимательно посмотреть, то видно, что 8800 будет поддерживать для геометрических шейдеров как NV-, так и EXT-расширение. Вполне вероятно, что у ATI будет ATI- и EXT-расширения или только последнее. Ну а в будущем появится и ARB-расширение, которое позже войдет в OpenGL 3.0 Да, и еще. Перечисленные расширения будут работать на любой платформе, для которой есть свежие драйверы видеокарты - и в линуксе, и под виндой, причем не только под вистой |
| Автор: $tatic 15.1.2007, 17:04 | ||
| И вот еще нашел пример приложения с геометрическими шейдерами (ссылка с opengl.org): http://www.icare3d.org/content/view/50/9/ Обратите внимание на следующее замечание:
|
| Автор: mr.DUDA 15.1.2007, 22:48 |
| Подождём третьей версии ОпенЖеле... Кстати, когда она планируется ? |
| Автор: $tatic 16.1.2007, 10:48 |
| ИМХО еще не скоро. Вообще версия стандарта определяет только базовый (даже можно сказать "минимальный") набор возможностей, ниже которого уже некуда. Все равно расширениями пользоваться необходимо. Да и в этом ничего позорного нет. А в спецификации расширения по шейдерам прямо и написано: мультивендорное А что еще интересного в DirectX 10 - а то расширений для желе куча, а услышал только про шейдеры и Instances. |
| Автор: mr.DUDA 16.1.2007, 12:16 | ||||
Так время не стоит на месте, многие возможности давно уже де-факто являются неотъемлемыми при программировании 3D. Например, те же шейдеры.
Да в общем, все расширения от желе в D3D10 должны быть в том или ином виде. |
| Автор: $tatic 16.1.2007, 12:49 | ||
Фраза выглядит так, как будто DirectX за OpenGL бежит |
| Автор: mr.DUDA 16.1.2007, 17:39 | ||
Это NVidia бежит за рынком, им важно чтоб аудитория пользователей WinXP могла хотя бы в теории расчитывать на поддержку новых фишек G80, не только пользователи Vista. Вдруг какой-нибудь разработчик новой игрушки решит поддержать XP, реализовав рендеринг на OpenGL ? З.Ы, а прибамбасы в 6600 есть - это шейдеры 3.0 и поддержка HDR. |
| Автор: $tatic 17.1.2007, 12:22 |
Кстати, а что требуется в видеокарте для его поддержки, или это чисто шейдерный эффект? |
| Автор: mr.DUDA 17.1.2007, 23:10 | ||||
HDR это почти отдельная философия работы с цветом:
http://download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_HDR.pdf |
| Автор: $tatic 18.1.2007, 14:48 |
| mr.DUDA, спасибо. Похоже, что на поле сражения мы одни остались |
| Автор: mr.DUDA 18.1.2007, 14:53 |
| Я вижу, сторонников OpenGL больше. И что-то мне подсказывает, что этот выбор для многих продиктован скорее ненавистью к Micro$oft и всему что с ней связано, чем опытом разработки под OpenGL или D3D. |
| Автор: Artemios 18.1.2007, 19:02 | ||
А как же с: Windows -- выбор большинства? |
| Автор: $tatic 18.1.2007, 22:09 |
Так OpenGL и под виндой работает. |
| Автор: mr.DUDA 18.1.2007, 23:23 |
| Так вопрос ведь в том, что лучше для разработки 3D - опенжеле или директ ? |
| Автор: Void 18.1.2007, 23:30 | ||
Вопрос «Что лучше, XXX или YYY» в такой постановке всегда некорректен. |
| Автор: Artemios 19.1.2007, 03:31 | ||
таки тем более перевес голосов еще не значит, что юниксоиды свою ненавись выплескивают |
| Автор: $tatic 19.1.2007, 10:46 |
| ИМХО если сравнивать OpenGL и Direct3D по возможностям, то они примерно равны. Только OpenGL изначально проектировался как мощное клиент-серверное API для программирования трехмерной графики с аппаратной акселерацией. А DirectX изначально был примитивной software rendering библиотекой. То, чем сегодня стал DirectX, оказалось возможным только благодаря пиару мелких и огромным капиталовложениям. Вот и сегодня DirectX 10 так же пиарят, хотя не было никаких препятствий для его реализации в предыдущих версиях Windows. Таким образом напрашивается вывод - если есть необходимость в реализации кроссплатформенности хотя бы между различными версиями Windows, то сейчас логичнее всего было бы пользоваться OpenGL, хотя можно и DirectX. Насчет того, на чем лучше разрабатывать 3D - зависит ИМХО больше от опыта разработчиков. Хотя в плане спецэффектов, да и технической графики (здесь лучше OpenGL, т.к. для него разрабатывают специфические графические ускорители типа Fire GL или Quadro FX, оптимизированные не на шейдеры, а на скорость рендеринга) возможности API зависят больше от возможностей видеокарты. |
| Автор: mr.DUDA 20.1.2007, 14:00 | ||
Что имеется ввиду под скоростью рендеринга ? |
| Автор: mr.DUDA 20.1.2007, 23:52 |
| Вот кстати http://www.kriconf.ru/2006/rec/ppt/KRI_2006_Programming_08apr_Yupiter_05_Yurii_Uralskii_Nvidia.ppt, интересно почитать, кто в этом разбирается. |
| Автор: Gregorian 21.1.2007, 00:08 |
| mr.DUDA, сейчас прочитаю и всё скажу что думаю! Добавлено @ 00:22 mr.DUDA, всё что описано в предлагаемой презентации, возможности видеокарты + реализация драйвера.Следовательно всё тоже самое можно сделать и на OpenGL. |
| Автор: $tatic 21.1.2007, 11:46 |
Я наверное некорректно выразился - просто FireGL и Quadro FX заточены под техническую графику, в которой ни шейдеров, ни HDR, ни т.п. нет. За счет этого удается повысить скорость вывода вершин и наложения текстур, т.е. более "примитивных" операций. |
| Автор: mr.DUDA 21.1.2007, 16:02 |
| Gregorian, а как насчёт (к примеру) разнотипных/неоднородных данных в вершинных буферах ? Или рендеринга в константный буфер ? И так далее... В d3d нет разницы теперь что за данные, главное как шейдер их будет обрабатывать. $tatic, ну от fixed function pipeline уже потиху все отходят в сторону программируемости, так не совсем понятно для чего эти карты нужны. Или я что-то упустил ? |
| Автор: Void 21.1.2007, 16:10 |
| Не помню, как там с FireGL, но Quadro FX делается почти на тех же самых чипах, что и GeForce соответствующего поколения: поддерживаются и шейдеры и всё прочее. Оптимизация в основном на уровне драйверов. Помнится, на форумах iXBT сотрудник NVIDIA упоминал какие-то аппаратные различия. Ищущий, да найдёт. Факт в том, что профессиональные карты действительно показывают значительно большие результаты в CAD-приложениях по сравнению со своими равночастотными собратьями по архитектуре. Чего тут больше: «железных» оптимизаций или искусственного позиционирования с помощью драйверов — другой вопрос. |
| Автор: Амортизатор2 21.1.2007, 16:22 |
| Возможности обеих и на мейнстримных картах (NVidia, ATI) одинаковы, но если новейшие фичи с каждым выпуском новго оборудования поддерживаются производителями для DX на уровне HAL, то для OpenGL приходится использовать устаревший стандарт 2.0 + расширения, для каждой карты - свои. В итоге с OGL получаем - аппаратная зависимость - это раз. Во-вторых, для того, чтобы корректно заюзать эти расширения, нужно писать много кода достаточно низкого уровня. Для спецов а-ля Кармайк это, возможно, и не проблема, но стоимость подготовки OGL-разработчика будет выше, чем в случае DirectX. Само собой, что OGL никуда не денется - производители ведь так и будут поддерживать его в своих картах. Но с рынка игр, вполне вероятно, вскоре будет полностью вытеснен. Добавлено @ 16:30 Void, шейдера на FireGL появились, но только 2.0 |
| Автор: WERITAS 22.1.2007, 22:21 | ||
IMHO с вероятностью 95% |
| Автор: $tatic 23.1.2007, 13:34 | ||||
Почему же устаревший? Большинство расширений, как раз таки общие, имеют префиксы ARB и EXT. Согласно предыдущему пункту - не так. Кроме того получаем еще и платформенную независимость.
Много кода не требуется, кроме того даже для нового расширения имея документацию к нему, можно без проблем подключить все необходимые функции.
Вряд ли. |
| Автор: nonstop 23.1.2007, 14:47 |
| мой выбор - OpenGL 1. кроссплатформенный 2. постоянный API и открытые спецификации |
| Автор: NightmareZ 30.7.2008, 18:08 |
Работает |
| Автор: mr.DUDA 2.8.2008, 10:58 |
| Великий апологет OpenGL Джон Кармак заявил, что Id Tech 5 будет поддерживать как OpenGL так и Direct3D9, вот так вот. http://en.wikipedia.org/wiki/Id_Tech_5 Не говоря уже о других титанах (Unreal Engine 3, Source engine, Gamebryo и т.д.), которые почему-то брезгуют OpenGL. |
| Автор: Void 2.8.2008, 11:21 |
| mr.DUDA, учитывая, что Q4 и ET: QW были портированы на Xbox 360 почти сразу после релиза, думаю, движки Кармака дружат с DX давно. С другой стороны, id Software вроде не собирается отказываться от MacOS X и Linux, так что OpenGL FTW |
| Автор: mr.DUDA 2.8.2008, 11:45 |
| Кросс-платформенность как всегда подпортила статистику, эх... |