Я только начинаю изучать 3D-программирование с помощью Direct3D. Какую версию D3D мне выбрать?
11 выглядит довольно аккуратно, но 9 и 10 все еще выглядят довольно прилично. Учитывая текущее состояние индустрии разработки игр, какую версию имеет смысл начать использовать?
Ответы:
Это зависит от того, хотите ли вы разработать движок для создания игры, которая будет сделана через три года, один год или шесть месяцев, и от того, думаете ли вы о консольных портах. Будет довольно легко выбросить 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, что, на мой взгляд, было глупо глупо. ,
источник
tldr: выучить D3D11.
Разница между 10 и 11 довольно мала с точки зрения формы API. D3D11 позволяет вам использовать понижение уровня для написания кода для API D3D11, который будет работать вплоть до аппаратного обеспечения класса D3D9 (обратите внимание, что вам все равно потребуется Vista или выше). Таким образом, вы можете также изучить более новый API, который я считаю более чистым и более равномерным.
Однако, если у вас нет Vista или выше, или вы в конечном итоге хотите, чтобы ваш собственный код работал на XP (например, для распространения вашей игры среди пользователей XP), вам придется использовать D3D9. Тем не менее, рынок XP, вероятно, сокращается, поэтому я бы сказал, что если хотите, перейдите на 11.
источник
Если вы абсолютно новичок в 3D-программировании, и особенно если вы новичок в программировании на COM и Windows, я бы настоятельно рекомендовал не изучать DirectX сейчас. По моему опыту, DirectX является чрезвычайно мощным инструментом, но у него очень крутая кривая обучения, которую вы должны учитывать в дополнение к кривым обучения программированию Windows, 3D-программированию и многим другим. Если вы начнете с DirectX, вы можете почувствовать себя ошеломленными всеми деталями создания стандартного кода, поэтому я советую против этого.
Вместо этого я бы порекомендовал более простой API, который позволит вам больше сосредоточиться на изучении 3D-программирования. XNA довольно хорош, и, поскольку он находится на вершине DirectX, после перехода на DirectX у вас появятся некоторые идеи, которые значительно облегчат процесс изучения DirectX.
Теперь, если у вас есть опыт в 3D-программировании, например, в OpenGL, и вы знаете, как делать COM-программирование, я бы порекомендовал DirectX 11. Все, кроме последней версии, устарело, и любой опыт, полученный вами, будет полезен для более короткий промежуток времени.
Но опять же, реальный опыт зависит от разнообразия, поэтому я рекомендую вам изучить DirectX и OpenGL, а также XNA, если хотите, и как можно больше API. Таким образом, вы будете иметь абстрактные знания о том, как 3D-программирование работает с различными инструментами, и вы сможете использовать подходящий инструмент для каждой работы.
источник
Я рекомендую DX11 или DX10. Разница очень маленькая. Вы можете просто делать больше вещей с DX11 (hw tessalation, лучше gpgpu, вывод на несколько текстур на пиксельном шейдере ...). DirectX 9 имеет другую архитектуру и на данный момент немного устарел. Если вы спрашиваете о текущей игровой индустрии: для современных компьютерных игр DX9 мертв.
Но я должен сказать:
не волнуйтесь о API , как только вы действительно поймете, как работает графика, изучение нового API займет максимум один месяц. Еще короче время.
источник
Я слышал, что dx9 с системой win xp - это одноядерная система. Это старая технология. Я рекомендую вам dx11.
источник