Должен ли я изучать Direct3D 9, 10 или 11? [закрыто]

14

Я только начинаю изучать 3D-программирование с помощью Direct3D. Какую версию D3D мне выбрать?

11 выглядит довольно аккуратно, но 9 и 10 все еще выглядят довольно прилично. Учитывая текущее состояние индустрии разработки игр, какую версию имеет смысл начать использовать?

dotminic
источник
Вопросы о том, какую технологию использовать, не являются хорошими вопросами.
MichaelHouse

Ответы:

12

Это зависит от того, хотите ли вы разработать движок для создания игры, которая будет сделана через три года, один год или шесть месяцев, и от того, думаете ли вы о консольных портах. Будет довольно легко выбросить 360-портовый порт вашей игры из Direct3D9, но вам нужно будет сделать намного больше, начиная с D3D11. Помните, что D3D11 блокирует всех пользователей XP, если не обязательно все оборудование D3D9.

Согласно последнему опросу Steam, около 16% людей все еще используют Windows XP. Можете ли вы позволить себе вырезать их? К тому времени, когда ваша игра закончится, как это изменится? Собираетесь ли вы использовать функции, которые зависят от API более высокого уровня? Это вопросы, на которые вам нужно будет ответить самостоятельно.

Direct3D 9 чертовски доступен, и с D3D9 вы можете связаться со многими людьми, но дни его сочтены, особенно на ПК. Если вы не заинтересованы в нацеливании на этих людей, то в этом нет особого смысла.

О, и не беспокойтесь о DX10. Нет никакой причины использовать его поверх DX11. Если вы не хотите использовать D2D / DirectWrite, что не является необоснованным.

Конечно, стоит упомянуть, что в DX11 нет замен для классов, которые я, как любитель, нашел в DX9 чрезвычайно полезными. Такие, как ID3DXMesh, ID3DXSprite, ID3DXFont, должны компилировать ID3DXEffect из источника и т. Д. Microsoft рекомендует DirectWrite вместо ID3DXFont, но, конечно, они забыли сделать DX11-совместимым с новыми системами Direct2D / DirectWrite, что, на мой взгляд, было глупо глупо. ,

DeadMG
источник
Почему они удалили структуру эффекта? Это был очень полезный класс ИМО.
dotminic
@__dominic: Он не удален, но вы должны скомпилировать его самостоятельно.
DeadMG
1
@__dominic: Как отметил DeadMG, структура эффекта не была удалена, она была преобразована в автономный набор файлов кода, которые вы можете скомпилировать самостоятельно - это было сделано, чтобы сделать его версию более гибкой, чем ядро ​​D3D, и облегчить вопросы развертывания (особенно в отношении D3DX).
1
Я думаю, что хуже, чем вырезать 25% пользователей XP, является то, что только 17% имеют графические процессоры DX11 (на данный момент).
DMan
2
@DMan: D3D11 может работать на оборудовании более низкого уровня, включая оборудование D3D9.
DeadMG
9

tldr: выучить D3D11.

Разница между 10 и 11 довольно мала с точки зрения формы API. D3D11 позволяет вам использовать понижение уровня для написания кода для API D3D11, который будет работать вплоть до аппаратного обеспечения класса D3D9 (обратите внимание, что вам все равно потребуется Vista или выше). Таким образом, вы можете также изучить более новый API, который я считаю более чистым и более равномерным.

Однако, если у вас нет Vista или выше, или вы в конечном итоге хотите, чтобы ваш собственный код работал на XP (например, для распространения вашей игры среди пользователей XP), вам придется использовать D3D9. Тем не менее, рынок XP, вероятно, сокращается, поэтому я бы сказал, что если хотите, перейдите на 11.


источник
3

Если вы абсолютно новичок в 3D-программировании, и особенно если вы новичок в программировании на COM и Windows, я бы настоятельно рекомендовал не изучать DirectX сейчас. По моему опыту, DirectX является чрезвычайно мощным инструментом, но у него очень крутая кривая обучения, которую вы должны учитывать в дополнение к кривым обучения программированию Windows, 3D-программированию и многим другим. Если вы начнете с DirectX, вы можете почувствовать себя ошеломленными всеми деталями создания стандартного кода, поэтому я советую против этого.

Вместо этого я бы порекомендовал более простой API, который позволит вам больше сосредоточиться на изучении 3D-программирования. XNA довольно хорош, и, поскольку он находится на вершине DirectX, после перехода на DirectX у вас появятся некоторые идеи, которые значительно облегчат процесс изучения DirectX.

Теперь, если у вас есть опыт в 3D-программировании, например, в OpenGL, и вы знаете, как делать COM-программирование, я бы порекомендовал DirectX 11. Все, кроме последней версии, устарело, и любой опыт, полученный вами, будет полезен для более короткий промежуток времени.

Но опять же, реальный опыт зависит от разнообразия, поэтому я рекомендую вам изучить DirectX и OpenGL, а также XNA, если хотите, и как можно больше API. Таким образом, вы будете иметь абстрактные знания о том, как 3D-программирование работает с различными инструментами, и вы сможете использовать подходящий инструмент для каждой работы.


источник
2

Я рекомендую DX11 или DX10. Разница очень маленькая. Вы можете просто делать больше вещей с DX11 (hw tessalation, лучше gpgpu, вывод на несколько текстур на пиксельном шейдере ...). DirectX 9 имеет другую архитектуру и на данный момент немного устарел. Если вы спрашиваете о текущей игровой индустрии: для современных компьютерных игр DX9 мертв.

Но я должен сказать:
не волнуйтесь о API , как только вы действительно поймете, как работает графика, изучение нового API займет максимум один месяц. Еще короче время.

NotaBene
источник
3
DX9 не устарел. На XP все еще есть масса потенциальных пользователей. Возможно, он больше не находится в разработке и в ближайшие несколько лет устареет, но пока это не так.
Коммунистическая утка
1
@thecommunistduck Я согласен, но DX9 полностью устарел для его изучения. Потому что когда-то начинающий, который начнет изучать это сейчас, будет хорошо это знать ... он будет устаревшим. И конечно, я сказал это плохо в своем ответе.
Notabene
-5

Я слышал, что dx9 с системой win xp - это одноядерная система. Это старая технология. Я рекомендую вам dx11.

поисковая оптимизация
источник
3
Этот ответ не добавляет ничего продуктивного, и неясно (и, возможно, неправильно и вводит в заблуждение), что вы предлагаете в отношении «одноядерной системы».
1
Плюс «я слышал, что ...» не является достоверным источником доказательств (или почти ничего, на самом деле).
Максимус Минимус