Вопрос

Стандартная модель заключалась в том, что OpenGL предназначен для профессиональных приложений (CAD), а Direct3D - для игр.

С учетом провала OpenGL 3.0, является ли OpenGL по-прежнему естественным выбором для технических 3D-приложений (cad / GIS)?
Существуют ли библиотеки scenegraph для Direct3D?

(Конечно, Direct3D доступен только для Windows.)

Это было полезно?

Решение

D3D заставляет вас платить "налог на стратегию" Microsoft. То есть D3D обслуживает двух хозяев.Один из них - предоставление вам возможностей и производительности.Другой - обеспечить привязку к другим продуктам MS и платформе Windows в целом.Это имеет некоторые последствия для вас:

  1. Приложение D3D не будет работать ни на чем, кроме Windows (включая Xbox).Может быть, ты сейчас не думаешь, что это важно.Но если в будущем вы захотите работать на Mac, Linux, PS3, будущих консолях и т.д., вы можете быть рады, что выбрали независимый от платформы выбор.

  2. MS может принимать некоторые произвольные решения.Будет ли следующая версия D3D работать только на ОС, которая требует нового оборудования, стоит дорого, и многие люди не хотят обновляться до нее?Примут ли они в будущем какое-нибудь другое решение, с которым вы не согласны?

  3. Исторически сложилось так, что OpenGL лидировал в D3D по быстрому раскрытию новых функций HW.Это связано с тем, что в стандарте есть механизм, позволяющий поставщикам добавлять свои собственные расширения, и чтобы эти расширения в конечном итоге были включены в основную спецификацию.D3D - это то, чем хочет видеть его MS, разумеется, с учетом мнения поставщиков, но MS получает право вето.Вы легко могли бы оказаться в ситуации, подобной Vista, когда MS решила не предоставлять новые функции HW старому DX и сделать новый DX доступным только в Vista.Это было настоящей головной болью для разработчиков игр.

Итак, вот перечень причин, по которым "профессиональное приложение" (САПР, анимация, научная визуализация, ГИС и т.д.) Предпочло бы OGL - приложения, подобные этому, хотят быть стабильными в течение многих лет, нуждаются в постоянном обслуживании и совершенствовании и хотят работать на многих платформах.Это в отличие от игр, которые довольно часто выпускаются только на одной платформе, будут выпущены, но, как правило, не "поддерживаются" (вероятно, не будет версии 2.0, обновления для другой ОС через три года, не нужно поддерживать более старую версию HW и т.д.).Игры требуют максимальной производительности и должны работать только в течение короткого промежутка времени и на фиксированном количестве платформ.Если им все равно нужно настроить таргетинг на Windows, а D3D немного быстрее, это может быть правильным выбором, поскольку негативные последствия D3D не повредят им, как это было бы, скажем, для CAD-приложения.

Другие советы

Как всегда, это зависит от вашей ситуации.

По моему опыту, в настоящее время (2008) качество драйвера OpenGL в Windows является многое качество драйвера хуже, чем у Direct3D.Если ваша ситуация такова, что вы не можете разумно требовать от своих клиентов всегда иметь актуальные драйверы или сказать им сменить свои видеокарты на те, у которых есть лучшие драйверы OpenGL, то OpenGL - довольно плохой выбор.В этом случае я бы выбрал средство визуализации D3D в Windows и средство визуализации OpenGL в OS X / Linux (если, конечно, вам необходимо поддерживать эти платформы).

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

Конечно, есть некоторые (специфические) ситуации, когда D3D просто не обладает необходимыми функциями, напримергенерализованный вывод с четырьмя буферами;или поддержка геометрических шейдеров в Windows XP.

Итак, вкратце:если вам нужны лучшие драйверы для Windows, используйте D3D.Если вас не очень волнует качество драйвера или вам нужны функции, которые есть в OpenGL, но не в D3D, тогда используйте OpenGL.

Возможно, вам следует попробовать уровень абстракции, такой как ЛЮДОЕД, который позволяет переключаться между DirectX и OpenGL без необходимости что-либо переписывать?Он также добавляет много функциональности и не ориентирован на игру, но довольно общий.

Это не дает прямого ответа на ваш вопрос (извините), но я был одним из первых парней, работавших над Direct3D, и хе-хе:

Существуют ли библиотеки scenegraph для Direct3D?

Direct3D (в девичестве Reality Lab) раньше была просто библиотекой scenegraph :-)

Жаль, что сохраненный режим Direct3D больше не поставляется...

Direct3D доступен только на Windows и XBox.Если вы планируете ориентироваться на Unix или Mac, в дополнение к Windows, OpenGL - хороший выбор.

Для меня, выступающего в качестве графического программиста в крупной САПР-компании, в настоящее время есть три вещи, которые позволяют отказаться от OpenGL в пользу Direct3D (10/11) для существующих приложений CAD / DCC:

  1. Наследие.Большая часть программного обеспечения САПР более или менее вряд ли плотно прилегает к Понятия в OpenGL.Переписывание всего исходя из философии D3D не всегда управляемо (с технической точки зрения и зависит от способности / желания компании выделять на это ресурсы).

    Во-вторых, это может иметь негативные последствия, если что-то пойдет не так (с точки зрения функциональности и / или производительности), и компания просто не станет рисковать задержкой основного выпуска из-за переключения API и архитектуры.

  2. Народы.Люди в этих старых индустриях довольно консервативны.Они предпочитают тратить деньги / время на работу с IHV, касающимися всех драйверов OpenGL проблемы, которые у них могут возникнуть, или просто не рекомендуют использовать графику из определенного IHV (напримерIntel или ATI).

    Кроме того, я считаю, что клиенты автомобильной / аэрокосмической промышленности такие, как Boeing, Airbus, TMC, BMW и т.д. не особо заботятся о том, чтобы иметь рабочую станцию только Quadros.Аппаратное обеспечение по-прежнему дешево в сравнении с программным обеспечением цены на лицензии.

  3. Будущие тенденции.С будущим поколением процессоров, таких как Llano, Larrabee, Fermi и продукты, которые последуют за ними, определенно стоит инвестировать бюджеты на исследования и разработки в то, как программировать и разрабатывать новые языки / API / фреймворки для этих будущих аппаратных средств (с точки зрения графические, а также неграфические задачи).

    Отрасли CAD имеет огромный циклы и не двигаться, если не по-настоящему прорывные технологии.Так в D3D может просто пришел немного поздно для крупных игроков САПР (за исключением Аутодеск конечно, который является частным случаем).

Это не ответ как таковой, но интересно отметить, что последние версии AutoCAD предоставляют вам выбор между использованием драйверов OpenGL или Direct3D в опции настройки "3dconfig".По сути, AutoCAD - это приложение только для Windows, поэтому для них имело смысл (наконец-то) поддержать Direct3D.Смотрите страницу 15 из этот Технический документ от AutoDesk для получения дополнительной информации.

Ответ, в который все хотят верить, - "ДА", но реальный ответ таков: все зависит от обстоятельств.

Около 50% всего существующего оборудования не будут запускать OpenGL на каком-либо разумном уровне.Чтобы увидеть пример этого, прочтите FAQ по Google Sketchup, который использует OpenGL

Производительность SketchUp в значительной степени зависит от драйвера видеокарты и его способности поддерживать OpenGL 1.5 или выше.Исторически сложилось так, что люди сталкивались с проблемами с картами ATI Radeon и картами на базе Intel в SketchUp.В настоящее время мы не рекомендуем использовать эти видеокарты с SketchUp.(Требования к оборудованию и программному обеспечению для Google Sketchup

Итак, если вы пишете САПР-приложение и не возражаете сказать своим клиентам: "у вас должна быть видеокарта, совместимая с OpenGL", тогда ответ - да.

Если вместо этого вы создаете приложение для конечного пользователя (например, Google Планета Земля), то печальный ответ заключается в том, что вам придется написать как D3D, так и GL-версию вашего приложения, если вы хотите охватить весь рынок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top