OpenGL все еще лучше, чем Direct3D для неигровых игр? [закрыто]

    String tempVal = null;
    for (int i = 0; i < l.size(); i++) {
        tempVal = l.get(i); //take the ith object out of list
        while (l.contains(tempVal)) {
            l.remove(tempVal); //remove all matching entries
        }
        l.add(tempVal); //at last add one entry
    }

Примечание: это будет иметь большую производительность, хотя, поскольку элементы удаляются из начала списка. Чтобы решить эту проблему, у нас есть два варианта. 1) итерация в обратном порядке и удаление элементов. 2) Используйте LinkedList вместо ArrayList. Из-за необъективных вопросов, заданных в интервью, чтобы удалить дубликаты из списка без использования какой-либо другой коллекции, приведенным выше примером является ответ. В реальном мире, хотя, если я должен достигнуть этого, я положу элементы из списка в Set, просто!

23
задан Martin Beckett 19 June 2009 в 16:32
поделиться

8 ответов

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

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

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

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

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

35
ответ дан Larry Gritz 19 June 2009 в 16:32
поделиться

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

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

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

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

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

20
ответ дан NeARAZ 19 June 2009 в 16:32
поделиться

Direct3D только доступен в Windows и Xbox. Если Вы планируете предназначение для Unix или Mac, в дополнение к Windows, OpenGL является хорошим выбором.

3
ответ дан jwfearn 19 June 2009 в 16:32
поделиться

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

14
ответ дан Samir Talwar 19 June 2009 в 16:32
поделиться

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

2
ответ дан CAD bloke 19 June 2009 в 16:32
поделиться

Это непосредственно не отвечает на Ваш вопрос (извините), но я был одним из исходных парней, работающих над Direct3D и hehe:

там scenegraph библиотеки для Direct3D?

Direct3D (урожденная Reality Lab) используемый, чтобы просто быть scenegraph библиотекой:-)

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

4
ответ дан Steve Lacey 19 June 2009 в 16:32
поделиться

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

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

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

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

1
ответ дан 29 November 2019 в 00:45
поделиться

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

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

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

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

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

  3. Будущие тенденции . С будущим поколение процессоров типа Llano, Larrabee, Fermi и продукты, которые буду следовать, это определенно стоит инвестировать бюджеты НИОКР в то, как программировать и разрабатывать новые languages ​​/ apis / frameworks для будущего оборудования (с точки зрения графики, а также неграфические задачи).

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

3
ответ дан 29 November 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: