2015-04-18 4 views
2

Я относительно программный программист, но основное внимание было уделено разработке приложений с C#. У меня почти нулевой опыт разработки игр и 3d-движки - я начал читать о том, как работают 3D-двигатели вообще, например. было замечательное руководство, объясняющее, как разработать очень простой программный 3D-движок в C#. Очень полезно, но это в значительной степени отражает весь мой опыт в этой теме. Кроме того, я до сих пор не очень хорошо работал с C++ (хотя я знаю основные концептуальные отличия от C# и рассмотрю возможность достижения хотя бы «достаточной» скорости на этом языке, который можно использовать).Программирование на DirectX/C++ 3D Engine: узнайте сейчас или подождите DirectX 12?

Так или иначе, из чистого личного интереса я бы хотел пообщаться с развивающимися, а точнее, научиться разрабатывать простые 3D-графики на основе DirectX для образовательных целей. Меня просто интересуют графические части (нет звука/анимации/игровых состояний/сетей или что-то еще, только очень рудиментарный ввод). Предоставление некоторой простой геометрии, а затем постепенное изучение того, как расширить это с помощью более современных методов затенения, было бы неплохо.

Я уже нашел для этого большие ресурсы. Но прежде чем я вникаю в тему: я знаю, что DirectX12 не за горами, и, видя, насколько он, кажется, развивает систему, я действительно не уверен, что будет много изменений в API. Или, другими словами: я боюсь, что сейчас я начинаю изучать материал DirectX 11, и через несколько месяцев это будет бесполезно, так как DirectX 12 работает совершенно по-другому, с точки зрения программирования.

Я не уверен, насколько это уже известно или уже есть разработчик, ранее доступный широкой публике. Но если его можно сказать уже: вы бы, ребята, рекомендовали меня ждать DX12, или начать с v11, так как разработка будет очень похожа на будущее в любом случае?

Для справки я знаю, конечно, что обучение DX11 ни в коем случае не повредит. Но я не спешу, и если половина из того, что я буду изучать, теперь становится устаревшей через несколько месяцев, я бы предпочел просто ждать, пока не начнет медленно начинать.

ответ

7

Думайте о DX12 как о «DirectX без тренировочных колес, без тормозов, а в данный момент, возможно, без шин».

Для DirectX 12 будет достаточно нескольких месяцев, чтобы иметь богатый набор руководств, библиотек поддержки, передовой опыт, твердотельных драйверов и широко развернутую поддержку в операционной системе на компьютерах конечных пользователей , Сейчас это «кровоточить», и он наиболее востребован графическими программистами GPU, активно работающими над названиями и моделями сегодня, которые хотят убедиться, что все это работает.

Для всех остальных изучите DirectX 11, по крайней мере, на следующий год или около того, и, возможно, дольше в зависимости от потребностей вашего приложения, вашего личного уровня мастерства и фокуса того, что вы пытаетесь изучить в то же время.

Я могу сказать, что обучение программированию DirectX 11 с использованием legacy DirectX SDK таких вещей, как D3DX, является тупиковым для DX12. Вместо этого сосредоточьтесь на DirectX 11, используя «современные» помощники, такие как DirectX Tool Kit и DirectXMath для C++.

UPDATE:DirectX Tool Kit for DirectX 12 теперь доступен наряду с некоторыми tutorials. Тем не менее, лучше всего сначала изучить Direct3D 11, поскольку Direct3D 12 - это API, предназначенный для графических экспертов, и совершенно неумолимый для новичков.

1

Большинство из того, что вы узнаете, с помощью DirectX 11 будет применяться при переходе на версию 12.

В самом деле, для ваших целей, вы можете никогда не нужно переключаться. DirectX 12 существенно снижает простоту использования производительности процессора. Это также требует Windows 10, так что это будет более чем за несколько месяцев до того, как он станет широко использоваться.

DirectX 9 по-прежнему широко используется для создания игр, несмотря на его возраст. Я бы не рекомендовал его, если вы начинаете с нуля.

О, и что бы вы ни делали, не выбирайте DirectX 10. DirectX 11 может делать все то же самое, на тех же графических картах и ​​операционных системах.

+2

DirectX 9 по-прежнему поддерживается по трем причинам: (a) кодеки уже написаны для многих движков и существующих инструментов; (б) Xbox 360 был Direct3D 9, хотя у него было так много расширений, что, вероятно, не совсем правильно, Дизайн эпохи DirectX 9 «жив очень долгое время», и (в) для людей, специально предназначенных для Китая или России, у вас действительно есть целевая Windows XP. Тем не менее, поддержка отладки и инструментов или Direct3D 9 на современных платформах Windows не хватает для DirectX 9 и все больше эмулируется, а не в любом смысле «Прямая». –

+2

DX11 - это текущее «сладкое пятно» для обучения DirectX и применяется для всех поддерживаемых платформ Microsoft: Windows Vista с пакетом обновления 2 (SP2) + KB971644 или более поздняя версия поддерживает настольные приложения DX11 для Windows, и это минимально необходимый для Windows 8.x Store, Xbox One, Windows 8 и универсальных приложений Windows для Windows 10. Кроме того, поддержка инструмента хороша, и вы можете найти множество замен для [legacy D3DX stuff] (http://blogs.msdn.com/b/chuckw/archive/2013/08/21/living-without-d3dx.aspx), что поддерживает DX11. Библиотеки поддержки и даже понимание правильных шаблонов использования для DX12 все еще находятся в разработке. –

+0

Была и другая причина использовать DirectX 9 - если вам нужна поддержка старых видеокарт D3D9, вы можете использовать Shader model 3 (и 2a/2b) на них с DX9. DX 10 и 11 поддерживают их, но только с шейдерной моделью 2. – Adam