Почему d3dx устарел? - PullRequest
       52

Почему d3dx устарел?

0 голосов
/ 26 марта 2020

Я очень плохо знаком с DirectX и изучаю его только неделю. Коллекция мощных уроков, которые я нашла и извлекла из них, - braynzarsoft d3d12 уроков . Это очень сложно, информации много, но это то, что мне нравится.

Уроки кажутся незавершенными, и я решил поискать в Inte rnet, как создать сферу, возможно, есть готовая матрица вершин или какой-то алгоритм, который будет описывать вершины сферы. Я нашел этот вопрос , где один человек говорит, что то, что я делаю, на самом деле устарело, и теперь я должен программировать, используя DirectX Tool Kit .

Я действительно сбит с толку - У меня все хорошо, но весь мой код работает отлично и насколько я хочу.

Может ли кто-нибудь, имеющий опыт программирования DirectX, объяснить мне, почему то, что я делаю, устарело, что я в общем, и где я могу получить вершины сферы?


В настоящее время я написал простые вершинные и пиксельные шейдеры, инициализировал устройство d3d12, цепочку подкачки, список команд, описал вершины для четырехугольника и написал класс, который может добавлять, перемещать, вращать и масштабировать кубы, что я делаю в вызове Update() до UpdatePipeline().


Моя попытка

В DirectxTK есть функция D3DXCreateSphere с интерфейсами LPD3DXMESH *ppMesh и LPD3DXBUFFER *ppAdjacency в качестве выходных аргументов. Возможно, я могу получить нужный им массив вершин. Но в любом случае я не смогу объединить код DirectxTK с моим.

1 Ответ

1 голос
/ 28 марта 2020

Короткий ответ заключается в том, что в рамках разработки Windows 8 SDK (около 2011 г.) "DirectX SDK" был перенесен в Windows SDK. Библиотеки, заголовки и инструменты DirectX были перемещены в Windows SDK, а «DirectX SDK» был объявлен устаревшим (т. Е. Выпуск DirectX SDK в июне 2010 года был последним из когда-либо сделанных).

Microsoft перенесла образцы онлайн для Windows 8, поэтому большинство образцов в DirectX SDK были заброшены в пользу Windows Store / UWP образцов. В качестве личного проекта я поместил несколько образцов Direct3D 11 на обновленный GitHub , поэтому они используют только Windows SDK.

Число технологий, которые были оставлены в этой миграции, как отмечено на странице Microsoft Docs .

  • Разработка Direct3D 9 считается устаревшей, и основной причиной ее дальнейшего использования было Windows XP поддержка. Windows 8 SDK не поддерживает разработку Windows XP - Visual Studio 2012-2017 поддерживает разработку Windows XP с использованием Windows 7.1A SDK. Если вы хотите использовать Direct3D 9, вы в основном застряли с использованием унаследованного DirectX SDK - хотя некоторые движки имеют достаточно своего собственного вспомогательного кода, который им действительно не нужен D3DX9.

  • Разработка Direct3D 10 считается наследием. Direct3D 11 - это строгий супернабор Direct3D 10, поддерживаемый теми же версиями Windows, а механизм Feature Level означает, что Direct3D 11 работает на * * аппаратном обеспечении, чем Direct3D 10 когда-либо. Таким образом, вспомогательная библиотека D3DX10 устарела.

  • Библиотека XACT не была перенесена. Он был создан в основном для Xbox 360, поэтому он устарел.

  • Управляемый DirectX 1.1 устарел целую вечность (~ 2005)

См. The Zomb ie DirectX SDK

Что касается того, что вы должны использовать вместо этого, я создал несколько библиотек, чтобы заменить то, что было в D3DX9 / D3DX10 / D3DX11. См. Жизнь без D3DX

Для разработки DirectX 12 устаревший DirectX SDK никогда не поддерживал его. Образцы находятся на GitHub , в противном случае вы должны просто использовать Windows 10 SDK. У меня есть версия DirectX Tool Kit для DirectX 12, а также GitHub . Тем не менее, если вы новичок в DirectX, вам действительно следует начать с DirectX 11 .

Там означает такую ​​вещь, как D3DX12, но это не совсем то же самое, что и старая библиотека D3DX11. D3DX11 имел код для загрузки текстур, выполняющий сжатие B C и др. c. и требуются как заголовок, так и среда выполнения DLL. Единственный способ отправить DLL в вашу игру - использовать устаревшую DirectX Setup .

D3DX12 - это просто заголовок некоторых вспомогательных функций. Там нет DLL и нет REDIST. Обычно он копируется в проект при создании шаблона DirectX 12 Visual Studio, и его можно загрузить с GitHub .

DirectX Tool Kit для DX11 и DX12 , DirectXTex , DirectXMe sh, DirectXMath и UVAtlas обеспечивают многое из того, что D3DX9, D3DX10 и D3DX11 сделали, но поддерживают DirectX 11 и DirectX 12. Все они с открытым исходным кодом, поэтому нет DLL или REDIST: вы просто создаете его самостоятельно из исходного кода. Они не являются «вставными» заменами, но обеспечивают ту же функциональность в более современной форме C ++. Они поддерживают любую программу на C ++, написанную для разработки classi c "Win32", приложений Universal Windows Platform (UWP) или Xbox One.

Действительно, это первичная топи c I ' последние десять лет я освещал в моем блоге . Там много подробностей, если вы хотите больше информации о том, что происходит.

...