D3DX

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

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

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

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

Содержание

  • 1 Интерфейсы
    • 1.1 ID3DXEffect
    • 1.2 ID3DXFont
    • 1.3 ID3DXLine
    • 1.4 ID3DXMesh
    • 1.5 ID3DXPRTEngine
    • 1.6 ID3DXSprite
  • 2 функции
    • 2.1 D3DXComputeTangentFrame <1003>DirectFrame
    • 5 Direct3D12
    • 6 Ссылки
    • 7 Внешние ссылки

    Интерфейсы

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

    ID3DXEffect

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

    ID3DXFont

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

    ID3DXLine

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

    ID3DXMesh

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

    ID3DXPRTEngine

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

    ID3DXSprite

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

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

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

    Функции

    D3DXComputeTangentFrame

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

    Direct3D10

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

    Все версии D3DX10 объявлены устаревшими согласно документации Microsoft.

    Direct3D11

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

    Все версии D3DX11 объявлены устаревшими в соответствии с документами Microsoft.

    Большая часть функций D3DX9, D3DX10 и D3DX11 перемещена в проекты с открытым исходным кодом для Direct3D 11 или более поздних версий: DirectXMath, DirectX Tool Kit, DirectXTex, DirectXMesh и UVAtlas. Также доступны версии DXUT с открытым исходным кодом и среда исполнения Effects (FX11).

    Direct3D12

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

    Ссылки

    Внешние ссылки

Последняя правка сделана 2021-05-16 08:30:10
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте