2010-11-13 4 views

ответ

5

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

Практические соображения в том, что opengl доступен на других платформах, но d3d имеет тенденцию лучше поддерживаться и лучше работать на платформах Windows. d3d имеет более объектно-ориентированный интерфейс, тогда как opengl имеет строго «c» интерфейс стиля (хотя он занимается внутренне объектами через «имена» и дескрипторы). Вероятно, легче начать обучение, чем d3d11, для которого требуется совсем немного настройки, но в «реальных» приложениях этого не будет.

d3d11 предназначен для лучшей работы с многоядерным процессором и многопоточным программным обеспечением. Это добавляет некоторую сложность в ее использовании, но позволяет вам, возможно, использовать больше преимуществ аппаратного обеспечения, а затем opengl может быть на данный момент времени. (Тем не менее, если вы все еще на стадии запроса о том, что использовать, то это очень маловероятно для вас!)

Это, как правило, намного легче найти документацию для d3d9, чем opengl (я имею в виду «современный» материал, а не примеры использования устаревших способов делать вещи (что является проблемой с opengl, многие учебники и код там откровенно устарели и на самом деле не используют opengl правильно сейчас). В то время как довольно сложно найти хорошие примеры d3d11 и

Если вы не использовали ни один из них, я бы очень рекомендовал изучать основы BOTH и несколько разных подходов к одному и тому же базовому функциональному признаку. Не увлекайтесь тем, что один лучше, чем другой, узнайте обоим и посмотрите, что лучше подходит.Это то, что делают большинство людей, к сожалению, большинство «советов», которые вы получите в Интернете, похоже, от кого-то, кто решил, что для них важно толкать один или другой API!

Я нашел это полезным упражнением при обучении абстрагированию различий с небольшой C++-структурой, которая создает текстуры, буферы вершин, буферы индексов, коллекции renderstate и т. Д., И реализует эти концепции с точки зрения ОБА apis /.

5

OpenGL - это кросс-платформенный API для 3D-графики. DirectX - это API с ограниченной платформой для графики, аудио, музыки, ввода устройств, сетей и т. Д.

2

Кулак всего, DirectX - это намного больше, чем трехмерный ускоренный рендеринг. Я предполагаю, что вы говорите о Direct3D.

Во всяком случае, вот мой совершенно предвзятое мнение:

  • Direct3D работает на Windows, Xbox и иногда вино (в зависимости от конкретного приложения/игры). Выбор Direct3D сильно связан с вашим продуктом на платформах Microsoft.
  • Кодирование в Direct3D (по крайней мере, в прошлый раз, когда я пробовал это, что было несколько лет назад) делает обкатывание обнаженным в меду, идущим к гнезду шершня, и избиение смолы из нее звучит как приятный день.
  • OpenGL работает практически на любой платформе, которую можно вообразить и поддерживает большинство тех вещей, которые Direct3D делает в непосредственном режиме.
  • API OpenGL в основном чистый и радостный код.
+0

В DirectX нет немедленного режима, это, должно быть, было давно, что вы попробовали directx! – 2010-11-13 08:38:39

+0

Я думал, что это был режим сохранения, с которым они покончили, так как никто не использовал его. – cdhowie

+0

Можно с полным основанием предположить, что, поскольку люди * делают * еще код против Direct3D, программисты, как правило, являются разумными людьми, и я не слышал о каких-либо инцидентах, связанных с мед-шернем, есть некоторые преимущества. – ijw

Смежные вопросы