http://go.microsoft.com/fwlink/?LinkId=248926
저작권 (c) 마이크로소프트 주식회사.
2024년 10월 28일
이 패키지에는 .DDS
파일을 읽고 쓰기 위한 공유 소스 라이브러리인 DirectXTex가 포함되어 있으며 크기 조정, 형식 변환, 밉맵 생성, Direct3D 런타임 텍스처 리소스에 대한 블록 압축, 일반 높이 맵을 포함한 다양한 텍스처 콘텐츠 처리 작업을 수행합니다. 지도 변환. 이 라이브러리는 WIC(Windows 이미지 구성 요소) API를 사용합니다. 또한 이러한 이미지 파일 형식은 텍스처 콘텐츠 처리 파이프라인에 일반적으로 사용되지만 현재 내장된 WIC 코덱에서는 지원되지 않기 때문에 .TGA
및 .HDR
판독기와 기록기도 포함됩니다.
이 코드는 Visual Studio 2019(16.11), Visual Studio 2022, Windows v12 이상용 clang 또는 MinGW 12.2를 사용하여 빌드하도록 설계되었습니다. Visual Studio에는 Windows 10 2020년 5월 업데이트 SDK(19041) 이상을 사용해야 합니다. GCC 11 이상을 사용하여 Linux용 Windows 하위 시스템용으로 구축할 수도 있습니다.
이러한 구성 요소는 레거시 DirectX SDK의 콘텐츠 없이도 작동하도록 설계되었습니다. 자세한 내용은 DirectX SDK는 어디에 있습니까?를 참조하세요.
DirectXTex
여기에 있는 헤더 파일의 대부분은 라이브러리의 내부 구현만을 위한 것입니다(
BC.h
,BCDirectCompute.h
,DDS.h
,DirectXTexP.h
등).DirectXTex.h
및DirectXTex.inl
만이 라이브러리의 '공개' 헤더를 의미합니다.
Auxiliary
Common
Texconv
이 DirectXTex 샘플은 D3DX가 아닌 DirectXTex를 활용하는 DirectX SDK의 texconv 명령줄 텍스처 유틸리티를 구현한 것입니다.
이는 Texture Conversion Tool Extended ( texconvex.exe
) 레거시 DirectX SDK 유틸리티와 동일한 인수를 지원합니다. 주요 차이점은 -10
및 -11
인수를 적용할 수 없으며 필터 이름( POINT
, LINEAR
, CUBIC
, FANT
또는 BOX
, TRIANGLE
, *_DITHER
, *_DITHER_DIFFUSION
)입니다. 여기에는 JPEG XR(HD 사진) 비트맵 형식에 대한 지원도 포함됩니다.
Texassemble
Texdiag
DDSView
DDSTextureLoader
ScreenGrab
WICTextureLoader
DDSTextureLoader11, ScreenGrab11 및 WICTextureLoader11은 DX11용 DirectX 도구 키트에서 제공되는 동일한 모듈의 '독립형' 버전입니다.
DDSTextureLoader12, ScreenGrab12 및 WICTextureLoader12는 DX12용 DirectX 도구 키트에서 제공되는 동일한 모듈의 '독립형' 버전입니다.
build
문서는 GitHub 위키에서 볼 수 있습니다.
이 패키지의 모든 콘텐츠와 소스 코드에는 MIT 라이선스 조건이 적용됩니다.
최신 버전의 DirectXTex, 버그 리포트 등을 보려면 GitHub의 프로젝트 사이트를 방문하세요.
보안 자문은 GitHub를 참조하세요.
전체 변경 내역을 보려면 CHANGELOG.md를 참조하세요.
2022년 7월 릴리스부터 CreateTextureEx 및 CreateShaderResourceViewEx 함수에 대한 bool forceSRGB
매개변수는 이제 CREATETEX_FLAGS
유형의 열거형 비트마스크 플래그 매개변수입니다. 이는 클라이언트 코드에 중대한 변경 영향을 미칠 수 있습니다. true
CREATETEX_FORCE_SRGB
로 바꾸고 false
CREATETEX_DEFAULT
로 바꿉니다.
2020년 6월 릴리스부터 이 라이브러리는 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는 시스템에 타사 WIC 코덱이 설치되어 있지 않으면 .TGA
또는 .HDR
파일을 로드할 수 없습니다. 추가 WIC 코덱에 의존하지 않고 TGA/HDR 파일 형식 지원을 위해 DirectXTex 라이브러리를 사용해야 합니다.
UWP 프로젝트와 Win10 클래식 데스크톱 프로젝트에는 ARM64 플랫폼에 대한 구성이 포함되어 있습니다. 이를 구축하려면 ARM64 도구 세트를 설치해야 합니다.
ARM64/AArch64 개발의 경우 VS 2019 도구 세트보다 VS 2022 컴파일러를 사용하는 것이 좋습니다. Windows SDK(26100 이상)는 ARM64 개발의 Win32용 VS 2019와 호환되지 않습니다. ARM32/AArch32 플랫폼은 더 이상 사용되지 않습니다 .
ARM64/AArch64 플랫폼에 clang/LLVM을 사용하는 경우 Windows 11 SDK(22000) 이상이 필요합니다.
CompileShaders.cmd
스크립트에는 Windows 스타일(CRLF) 줄 끝이 있어야 합니다. Linux 스타일(LF) 줄 끝으로 변경되면 필요한 셰이더를 모두 빌드하지 못할 수 있습니다.
2024년 10월 릴리스부터 명령줄 도구는 --
사용하여 GNU 스타일의 긴 옵션도 지원합니다. 모든 기존 스위치는 계속 작동하지만 -
옵션 중 일부는 이제 이 표에 따라 더 이상 사용되지 않습니다.
텍어셈블 | texconv | 텍스트 진단 | |||
---|---|---|---|---|---|
-톤맵 | --톤맵 | -배드테일 | --나쁜 꼬리 | -배드테일 | --나쁜 꼬리 |
-bgcolor | --gif-bg-색상 | -fixbc4x4 | --fix-bc-4x4 | -emips 무시 | --Mips 무시 |
-뒤섞다 | --뒤섞다 | -emips 무시 | --Mips 무시 | -허용적인 | --허용적 |
-stripmips | --strip-mips | -반전 | --invert-y | -targetx | --대상-x |
-보장 유지 | --보장 유지 | ||||
-허용적인 | --허용적 | ||||
-재구성 | --reconstruct-z | ||||
-색상 회전 | --회전 색상 | ||||
-singleproc | --단일 프로세스 | ||||
-뒤섞다 | --뒤섞다 | ||||
-tgazeroalpha | --tga-제로-알파 | ||||
-타이밍 | --타이밍 | ||||
-톤맵 | --톤맵 | ||||
-무손실 | --wic-무손실 | ||||
-wicmulti | --wic-멀티프레임 | ||||
-x2bias | --x2-바이어스 |
질문이 있는 경우 directxtk 태그와 함께 Stack Overflow를 사용하거나 dx12-developers 또는 dx9-dx11-developers 채널의 DirectX Discord Server를 사용해 보세요.
버그 보고서 및 기능 요청은 이 프로젝트의 GitHub 문제를 사용하세요.
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여에는 귀하가 귀하의 기여를 사용할 권리가 있고 실제로 그렇게 할 권리가 있음을 선언하는 기여자 라이센스 계약(CLA)에 동의해야 합니다. 자세한 내용을 보려면 https://cla.opensource.microsoft.com을 방문하세요.
끌어오기 요청을 제출하면 CLA 봇이 자동으로 CLA 제공이 필요한지 여부를 결정하고 PR을 적절하게 장식합니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 저장소에서 이 작업을 한 번만 수행하면 됩니다.
새로운 기능에 대한 테스트도 Test Suite 저장소에 PR로 제출해야 합니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 [email protected]으로 문의하세요.
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표나 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 이를 따라야 합니다. 이 프로젝트의 수정된 버전에 Microsoft 상표 또는 로고를 사용하면 혼동을 일으키거나 Microsoft 후원을 암시해서는 안 됩니다. 제3자 상표 또는 로고의 사용에는 해당 제3자의 정책이 적용됩니다.
DirectXTex 라이브러리는 Matt Lee, Xin Huang, Craig Peeper 및 수년에 걸쳐 D3DX 유틸리티 라이브러리를 개발한 수많은 Microsoft 엔지니어들의 도움을 받아 Chuck Walbourn의 작품입니다.
MemoryStreamOnBlob
구현에 도움을 준 Paul Penson에게 감사드립니다.
코드 검토에 지속적인 도움을 주신 Andrew Farrier와 Scott Matloff에게 감사드립니다.
JPEG/PNG 보조 기능에 기여한 박동하에게 감사드립니다.