http://go.microsoft.com/fwlink/?LinkId=248926
Авторские права (c) Корпорация Microsoft.
28 октября 2024 г.
Этот пакет содержит DirectXTex, библиотеку с общим исходным кодом для чтения и записи файлов .DDS
и выполнения различных операций по обработке содержимого текстур, включая изменение размера, преобразование формата, генерацию MIP-карт, сжатие блоков для ресурсов текстур времени выполнения Direct3D и преобразование карты высот в нормальное состояние. конвертация карты. Эта библиотека использует API-интерфейсы компонента изображения Windows (WIC). Он также включает в себя устройства чтения и записи .TGA
и .HDR
, поскольку эти форматы файлов изображений обычно используются для конвейеров обработки текстурного содержимого, но в настоящее время не поддерживаются встроенным кодеком WIC.
Этот код предназначен для сборки с помощью Visual Studio 2019 (16.11), Visual Studio 2022, clang для Windows v12 или более поздней версии или MinGW 12.2. Для Visual Studio требуется использование пакета SDK обновления Windows 10 за май 2020 г. (19041) или более поздней версии. Его также можно собрать для подсистемы Windows для Linux с использованием GCC 11 или более поздней версии.
Эти компоненты предназначены для работы без необходимости использования какого-либо содержимого из устаревшего пакета DirectX SDK. Подробности см. в разделе «Где находится DirectX SDK?».
DirectXTex
Большинство заголовочных файлов здесь предназначены только для внутренней реализации библиотеки (
BC.h
,BCDirectCompute.h
,DDS.h
,DirectXTexP.h
и т. д.). ТолькоDirectXTex.h
иDirectXTex.inl
считаются «публичными» заголовками библиотеки.
Auxiliary
Common
Texconv
Этот пример DirectXTex представляет собой реализацию утилиты текстур командной строки texconv из DirectX SDK, использующей DirectXTex, а не D3DX.
Он поддерживает те же аргументы, что и устаревшая утилита DirectX SDK расширенного инструмента преобразования текстур ( texconvex.exe
). Основные различия заключаются в том, что аргументы -10
и -11
неприменимы, а также имена фильтров ( POINT
, LINEAR
, CUBIC
, FANT
или BOX
, TRIANGLE
, *_DITHER
, *_DITHER_DIFFUSION
). Сюда также входит поддержка растрового формата JPEG XR (HD Photo).
Texassemble
Texdiag
DDSView
DDSTextureLoader
ScreenGrab
WICTextureLoader
DDSTextureLoader11, ScreenGrab11 и WICTextureLoader11 — это «автономные» версии тех же модулей, которые входят в набор инструментов DirectX для DX11.
DDSTextureLoader12, ScreenGrab12 и WICTextureLoader12 — это «автономные» версии тех же модулей, которые входят в набор инструментов DirectX для DX12.
build
Документация доступна на вики GitHub.
Все содержимое и исходный код этого пакета регулируются условиями лицензии MIT.
Чтобы получить последнюю версию DirectXTex, отчеты об ошибках и т. д., посетите сайт проекта на GitHub.
СОВЕТЫ ПО БЕЗОПАСНОСТИ см. на GitHub.
Полную историю изменений можно найти на сайте CHANGELOG.md.
Начиная с выпуска от июля 2022 г., параметр bool forceSRGB
для функций CreateTextureEx и CreateShaderResourceViewEx теперь является параметром флага битовой маски перечисления, введенным CREATETEX_FLAGS
. Это может привести к серьезным изменениям в клиентском коде. Замените true
на CREATETEX_FORCE_SRGB
и false
на CREATETEX_DEFAULT
.
Начиная с выпуска за июнь 2020 года, эта библиотека использует флаги битовой маски типизированного перечисления в соответствии с рекомендацией стандарта C++, раздел 17.5.2.1.3 Типы битовых масок . Это соответствует использованию в Direct3D 12 макроса DEFINE_ENUM_FLAG_OPERATORS
. Это может иметь серьезные последствия для клиентского кода:
Вы не можете передать литерал 0
в качестве значения флагов. Вместо этого вы должны использовать соответствующее значение перечисления по умолчанию: CP_FLAGS_NONE
, DDS_FLAGS_NONE
, WIC_FLAGS_NONE
, TEX_FR_ROTATE0
, TEX_FILTER_DEFAULT
TEX_FILTER_DEFAULT
TEX_FILTER_DEFAULT
, CNMAP_DEFAULT
или CNMAP_DEFAULT
.
Используйте тип перечисления вместо DWORD
при локальном создании значений флагов с помощью операций с битовой маской. Например, DDS_FLAGS flags = DDS_FLAGS_NONE; if (...) flags |= DDS_FLAGS_EXPAND_LUMINANCE;
В случаях, когда некоторые флаги перекрываются, вы можете использовать |
для объединения соответствующих типов: режимы фильтра TEX_FILTER_FLAGS
сочетаются с WIC_FLAGS
, флаги TEX_FILTER_FLAGS
sRGB сочетаются с TEX_PMALPHA_FLAGS
или TEX_COMPRESS_FLAGS
. Никакие другие побитовые операторы не определены. Например, WIC_FLAGS wicFlags = WIC_FLAGS_NONE | TEX_FILTER_CUBIC;
WICTextureLoader не может загружать файлы .TGA
или .HDR
, если в системе не установлен сторонний кодек WIC. Вы должны использовать библиотеку DirectXTex для поддержки формата файлов TGA/HDR, не полагаясь на дополнительный кодек WIC.
Проекты UWP и проект классического настольного компьютера Win10 включают конфигурации для платформы ARM64. Для их создания требуется установка набора инструментов ARM64.
Для разработки ARM64/AArch64 настоятельно рекомендуется использовать компилятор VS 2022 вместо набора инструментов VS 2019. Windows SDK (26100 или новее) несовместим с VS 2019 для разработки Win32 на ARM64. Обратите внимание, что платформа ARM32/AArch32 устарела .
При использовании clang/LLVM для платформы ARM64/AArch64 требуется Windows 11 SDK (22000) или более поздняя версия.
Сценарий CompileShaders.cmd
должен иметь окончания строк в стиле Windows (CRLF). Если его изменить на окончание строк в стиле Linux (LF), возможно, не удастся построить все необходимые шейдеры.
Начиная с выпуска за октябрь 2024 года, инструменты командной строки также поддерживают длинные параметры в стиле GNU с использованием --
. Все существующие переключатели продолжают работать, но некоторые параметры -
согласно этой таблице теперь устарели:
Техасская сборка | текконв | texdiag | |||
---|---|---|---|---|---|
-карта тонов | --tonemap | -бэдтейлы | --bad-tails | -бэдтейлы | --bad-tails |
-bgcolor | --gif-bg-color | -fixbc4x4 | --fix-bc-4x4 | -игноремиппс | --ignore-mips |
-ssizzle | --swizzle | -игноремиппс | --ignore-mips | -позволительный | --разрешительный |
-стриптизы | --strip-mips | -инвертация | --invert-y | -targetx | --target-x |
-держать прикрытие | --keep-покрытие | ||||
-позволительный | --разрешительный | ||||
-реконструировать | --reconstruct-z | ||||
-rotatecolor | --rotate-color | ||||
-singleproc | --single-proc | ||||
-ssizzle | --swizzle | ||||
-tgazeroalpha | --tga-ноль-альфа | ||||
-время | --время | ||||
-карта тонов | --tonemap | ||||
-без потерь | --wic-без потерь | ||||
-wicmulti | --wic-multiframe | ||||
-x2bias | --x2-смещение |
Если у вас есть вопросы, рассмотрите возможность использования Stack Overflow с тегом Directxtk или сервера DirectX Discord на канале dx12-developers или dx9-dx11-developers .
Для отчетов об ошибках и запросов на добавление функций используйте вопросы GitHub для этого проекта.
Этот проект приветствует вклад и предложения. Большинство вкладов требуют от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
Тесты новых функций также следует отправлять в виде PR в репозиторий Test Suite.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Разрешенное использование товарных знаков и логотипов Microsoft регулируется и должно соответствовать Руководству Microsoft по товарным знакам и брендам. Использование товарных знаков или логотипов Microsoft в измененных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование товарных знаков или логотипов третьих лиц регулируется политикой этих третьих сторон.
Библиотека DirectXTex — это работа Чака Уолборна при участии Мэтта Ли, Синь Хуанга, Крейга Пипера и многих других инженеров Microsoft, которые на протяжении многих лет разрабатывали библиотеку утилит D3DX.
Спасибо Полу Пенсону за помощь в реализации MemoryStreamOnBlob
.
Спасибо Эндрю Фарриеру и Скотту Мэтлоффу за постоянную помощь в проверке кода.
Благодарим Пак Дон Ха за вклад в поддержку вспомогательных функций JPEG/PNG.