Jump to content

D3DX

В вычислительной технике D3DX ( расширение Direct3D) представляет собой библиотеку API высокого уровня , написанную в дополнение к Microsoft от графическому API Direct3D . Библиотека D3DX была представлена ​​в Direct3D 7 и впоследствии была улучшена в Direct3D 9 . Он предоставляет классы для общих вычислений с векторами, матрицами и цветами, расчета матриц просмотра и проекции, сплайн-интерполяции и нескольких более сложных задач, таких как компиляция или сборка шейдеров, используемых для программирования 3D-графики, хранения сжатой скелетной анимации и стеков матриц. Существует несколько функций, которые обеспечивают сложные операции над 3D-сетками, такие как вычисление касательного пространства, упрощение сетки, предварительно вычисленная передача яркости, оптимизация удобства кэша вершин и переупорядочение полос, а также генераторы для 3D-текстовых сеток. 2D-функции включают классы для рисования линий экранного пространства, системы частиц на основе текста и спрайтов . Пространственные функции включают в себя различные процедуры пересечения, преобразование из/в барицентрические координаты, а также генераторы ограничивающих рамок и сфер.

Библиотека D3DX содержит заранее написанные процедуры для выполнения задач, общих для большинства 2D/3D-приложений, таких как игры. Поскольку Direct3D API является относительно низкоуровневым, использование библиотеки D3DX обычно намного проще.

В 2012 году Microsoft объявила, что D3DX 9, D3DX 10 и D3DX 11 будут устаревшими в Windows 8 SDK. [1] наряду с другими средами разработки, такими как XNA . Эффекты шейдеров, управление текстурами, оптимизация геометрии и модели сеток доступны в виде отдельных источников, опубликованных на GitHub . [2] Математические конструкции D3DX, такие как векторы и матрицы , будут объединены с помощью XNAMath в DirectXMath. [3] а математические расчеты сферических гармоник представлены в виде отдельного источника. [2]

Интерфейсы

[ редактировать ]

Библиотека D3DX следует COM модели объектно-ориентированного программирования . Доступ к функциональности осуществляется с помощью интерфейсов, подобных C++ .

Интерфейс ID3DXEffect используется для компиляции и привязки шейдеров FX (.fx). Он поддерживает автоматическое сопоставление именованных параметров шейдера с регистрами аппаратных констант, пулами параметров, сопоставление текстур с доступными сэмплерами, определение «методов» и изменение состояний рендеринга.

Интерфейс ID3DXFont можно использовать для рисования 2D-текста. См. также D3DXCreateText, который создает трехмерные сетки текста.

Интерфейс ID3DXLine можно использовать для рисования сглаженных линий экранного пространства с узором.

Интерфейс ID3DXMesh используется для хранения сеток и оптимизации сеток для удобства кэширования вершин и переупорядочения полос. Некоторые функции D3DX работают через этот интерфейс. Примером является D3DXComputeTangentFrame для создания кадра касательного пространства для таких эффектов, как отображение нормалей и параллакса. Потомком этого класса является ID3DXPMesh, который может выполнять упрощение геометрии.

ID3DXPRTEДвигатель

[ редактировать ]

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

ID3DXСпрайт

[ редактировать ]

Интерфейс ID3DXSprite — это класс C++, используемый для вывода на экран двухмерного изображения, известного как спрайт в компьютерной графике . В DirectX 7 это обычно делалось с помощью API DirectDraw , который устарел.

Программисту обычно нужно только вызвать метод Begin() объекта ID3DXSprite, чтобы настроить состояние рендеринга и преобразование мира для 2D-рисования, вызвать метод Draw(), чтобы добавить текстуры в список, который нужно отрисовать, и, наконец, вызвать метод End(). для вывода изображений на экран и восстановления исходного состояния графики.

Распространенной критикой D3DXSprite было то, что он был медленным, но эта проблема была решена в Direct3D 9 .

D3DXComputeTangentFrame

[ редактировать ]

Он вычисляет кадр касательного пространства сетки, который используется для таких эффектов, как отображение нормалей/выпуклостей, отображение параллакса и моделей анизотропного освещения. Он обрабатывает вершины на разрывах касательного пространства, создавая дубликаты, тем самым решая проблему волосатого шара . Он не обрабатывает обратную УФ-намотку граней, поэтому модели с зеркальным наложением текстур могут из-за этого столкнуться с проблемами освещения.

Директ3D10

[ редактировать ]

Утилитная библиотека D3DX10 для Direct3D 10 была аналогична D3DX для Direct3D 9 по функциональности и включала ту же библиотеку D3DXMath и программные кодеки сжатия блоков (BC1-BC5). Ключевые различия заключались в том, что эффекты для Direct3D 10 были сделаны компонентом ОС, компилятор HLSL был перенесен в отдельную D3DCompile DLL, а код загрузки и сохранения изображения текстуры использовал компонент Windows Imaging Component . В результате перехода на использование WIC D3DX10 не поддерживал форматы изображений Truevision TGA , RGBE или Portable PixMap , которые поддерживались D3DX. D3DX10 также не включал атлас текстур изокарт UVAtlas или API-интерфейсы Precomputed Radiance Transfer .

Согласно Microsoft Docs, все версии D3DX10 устарели. [3]

Директ3D11

[ редактировать ]

Библиотека утилит D3DX11 для Direct3D 11 представляла собой урезанную версию D3DX10. Он включал в себя код загрузки и сохранения изображений текстур с использованием WIC и программные кодеки блочного сжатия (BC1-BC7), но не более того.

Согласно Microsoft Docs, все версии D3DX11 устарели. [3]

Большая часть функций D3DX9, D3DX10 и D3DX11 была перенесена в проекты с открытым исходным кодом для Direct3D 11 или более поздних версий: DirectXMath, [4] Набор инструментов DirectX, [5] ДиректХтекс, [6] ДиректXМеш, [7] и УВАтлас. [8] Существуют также версии DXUT с открытым исходным кодом. [9] и эффекты (FX11) [10] доступное время выполнения.

Директ3D12

[ редактировать ]

Утилита D3DX12 на основе DLL отсутствует. Однако существует заголовок утилиты D3DX12 (весь встроенный код C++) для некоторых базовых помощников для Direct3D 12, описанных в Microsoft Docs. [11] и опубликован на GitHub. [12] Он не включает в себя такие функции, как математические вычисления, спрайты, рендеринг шрифтов, 3D-фигуры, сетки или загрузку текстур. Существует набор инструментов DirectX для Direct3D 12. [13] который обеспечивает недостающую функциональность.

  1. ^ «Функции D3DX (графика Direct3D 11)» . Майкрософт.
  2. ^ Jump up to: а б «Жизнь без D3DX» . MSDN. 20 августа 2013 г.
  3. ^ Jump up to: а б с Майкрософт. «Где DirectX SDK?» . Майкрософт . Проверено 28 июня 2020 г.
  4. ^ «ДиректХМатематика» . Гитхаб. 17 февраля 2022 г.
  5. ^ «Набор инструментов DirectX для DX11» . Гитхаб. 18 февраля 2022 г.
  6. ^ «Библиотека обработки текстур DirectXTex» . Гитхаб. 16 февраля 2022 г.
  7. ^ «Библиотека обработки геометрии DirectXMesh» . Гитхаб. 18 февраля 2022 г.
  8. ^ «Библиотека атласа текстур изокарт UVAtlas» . Гитхаб. 15 февраля 2022 г.
  9. ^ «DXUT для Direct3D 11» . Гитхаб. 12 февраля 2022 г.
  10. ^ «Эффекты для Direct3D 11» . Гитхаб. 12 февраля 2022 г.
  11. ^ Майкрософт. «Вспомогательные структуры и функции для D3D12» . Майкрософт . Проверено 28 июня 2020 г.
  12. ^ «D3DX12» . Гитхаб.
  13. ^ «Набор инструментов DirectX для DX12» . Гитхаб. 18 февраля 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ddaacdad50acaa228e2e53b24fb5ffe5__1648048440
URL1:https://arc.ask3.ru/arc/aa/dd/e5/ddaacdad50acaa228e2e53b24fb5ffe5.html
Заголовок, (Title) документа по адресу, URL1:
D3DX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)