ลิขสิทธิ์ (c) Microsoft Corporation
28 ตุลาคม 2024
แพ็คเกจนี้ประกอบด้วย "DirectX Tool Kit" ซึ่งเป็นชุดของคลาสตัวช่วยสำหรับการเขียนโค้ด Direct3D 11 C++ สำหรับแอป Universal Windows Platform (UWP) สำหรับ Windows 11, Windows 10, Xbox One และ Win32 แอปพลิเคชันเดสก์ท็อปสำหรับ Windows 7 Service Pack 1 หรือ ภายหลัง.
รหัสนี้ออกแบบมาเพื่อสร้างด้วย Visual Studio 2019 (16.11), Visual Studio 2022, clang สำหรับ Windows v12 หรือใหม่กว่า หรือ MinGW 12.2 จำเป็นต้องใช้ Windows 10 พฤษภาคม 2020 Update SDK (19041) หรือใหม่กว่าสำหรับ Visual Studio
ส่วนประกอบเหล่านี้ได้รับการออกแบบมาให้ทำงานโดยไม่ต้องใช้เนื้อหาใดๆ จาก DirectX SDK รุ่นเก่า สำหรับรายละเอียด โปรดดูที่ DirectX SDK อยู่ที่ไหน
Inc
Audio.h - API เสียงระดับต่ำโดยใช้ XAudio2 (DirectXTK สำหรับส่วนหัวสาธารณะ Audio)
BufferHelpers.h - ตัวช่วย C++ สำหรับการสร้างทรัพยากร D3D จากข้อมูล CPU
CommonStates.h - โรงงานจัดเตรียมวัตถุสถานะ D3D ที่ใช้กันทั่วไป
DDSTextureLoader.h - ตัวโหลดพื้นผิวไฟล์ DDS น้ำหนักเบา
DirectXHelpers.h - ตัวช่วย C++ อื่น ๆ สำหรับการเขียนโปรแกรม D3D
Effects.h - ชุดเชเดอร์ในตัวสำหรับงานเรนเดอร์ทั่วไป
GamePad.h - ตัวช่วยควบคุมเกมแพดโดยใช้ XInput, Windows.Gaming.Input หรือ GameInput
GeometricPrimitive.h - วาดรูปทรงพื้นฐาน เช่น ลูกบาศก์และทรงกลม
GraphicsMemory.h - ตัวช่วยในการจัดการการจัดสรรหน่วยความจำกราฟิกแบบไดนามิก
Keyboard.h - ตัวช่วยติดตามสถานะแป้นพิมพ์
Model.h - ดึงเมชที่โหลดจากไฟล์ .CMO, .SDKMESH หรือ .VBO
Mouse.h - ตัวช่วยเมาส์
PostProcess.h - ชุดเชเดอร์ในตัวสำหรับการดำเนินการหลังการประมวลผลทั่วไป
PrimitiveBatch.h - วิธีที่ง่ายและมีประสิทธิภาพในการวาดพื้นฐานผู้ใช้
ScreenGrab.h - โปรแกรมรักษาภาพหน้าจอน้ำหนักเบา
SimpleMath.h - wrapper C++ แบบง่ายสำหรับ DirectXMath
SpriteBatch.h - การเรนเดอร์สไปรท์ 2D ที่เรียบง่ายและมีประสิทธิภาพ
SpriteFont.h - การแสดงข้อความแบบบิตแมป
VertexTypes.h - โครงสร้างสำหรับรูปแบบข้อมูลจุดยอดที่ใช้กันทั่วไป
WICTextureLoader.h - ตัวโหลดพื้นผิวไฟล์รูปภาพที่ใช้ WIC
XboxDDSTextureLoader.h - แอปเอกสิทธิ์เฉพาะของ Xbox One ของ DDSTextureLoader
ไฟล์ส่วนหัวสาธารณะ (ในเนมสเปซ DirectX C++):
Src
ไฟล์ต้นฉบับ DirectXTK และส่วนหัวการใช้งานภายใน
Audio
DirectXTK สำหรับไฟล์ต้นฉบับเสียงและส่วนหัวการใช้งานภายใน
MakeSpriteFont
เครื่องมือบรรทัดคำสั่งที่ใช้ในการสร้างทรัพยากรไบนารีสำหรับใช้กับ SpriteFont
XWBTool
เครื่องมือบรรทัดคำสั่งสำหรับสร้างธนาคารคลื่นสไตล์ XACT เพื่อใช้กับ DirectXTK สำหรับคลาส WaveBank ของ Audio
build
มีไฟล์ YAML สำหรับไปป์ไลน์บิวด์พร้อมกับไฟล์บิวด์และสคริปต์เบ็ดเตล็ด
เอกสารมีอยู่ในวิกิ GitHub
เนื้อหาและซอร์สโค้ดทั้งหมดสำหรับแพ็คเกจนี้อยู่ภายใต้ข้อกำหนดของใบอนุญาต MIT
สำหรับ DirectXTK เวอร์ชันล่าสุด รายงานข้อผิดพลาด ฯลฯ โปรดเยี่ยมชมไซต์โครงการบน GitHub
สำหรับคำแนะนำด้านความปลอดภัย โปรดดูที่ GitHub
สำหรับประวัติการเปลี่ยนแปลงทั้งหมด โปรดดูที่ CHANGELOG.md
ตั้งแต่การเปิดตัวเดือนกุมภาพันธ์ 2023 เป็นต้นไป การใช้คลาส Mouse ของการเคลื่อนไหวของเมาส์แบบสัมพัทธ์ได้รับการอัปเดตเพื่อสะสมการเปลี่ยนแปลงระหว่างการเรียก GetState
ตามค่าเริ่มต้น แต่ละครั้งที่คุณเรียก GetState
เดลตาจะถูกรีเซ็ตซึ่งใช้ได้กับสถานการณ์ที่คุณใช้การเคลื่อนไหวแบบสัมพัทธ์ แต่เรียกเมธอดเพียงครั้งเดียวต่อเฟรมเท่านั้น หากคุณเรียกมันมากกว่าหนึ่งครั้งต่อเฟรม ให้เพิ่มการเรียกที่ชัดเจนไปที่ EndOfInputFrame
เพื่อใช้โมเดลการรีเซ็ตที่ชัดเจนแทน
ในการเปิดตัวเดือนกันยายน 2022 ไลบรารีจะใช้เนมสเปซแบบอินไลน์ C++11 สำหรับประเภทต่างๆ ที่มีชื่อเหมือนกันใน DirectX Tool Kit เวอร์ชัน DirectX 11 และ DirectX 12 ซึ่งให้ชื่อเฉพาะของลิงก์ เช่น DirectX::DX11::SpriteBatch
ที่จะปรากฏในข้อความเอาท์พุตของลิงก์เกอร์ อย่างไรก็ตาม ในกรณีการใช้งานส่วนใหญ่ ไม่จำเป็นต้องเพิ่มการแก้ไขเนมสเปซ DX11
อย่างชัดเจนในโค้ดไคลเอ็นต์
ตั้งแต่การเปิดตัวเดือนกรกฎาคม 2022 เป็นต้นไป พารามิเตอร์ bool forceSRGB
สำหรับฟังก์ชัน DDSTextureLoader Ex
จะเป็นพารามิเตอร์แฟล็ก enum bitmask ที่พิมพ์ DDS_LOADER_FLAGS
นี่อาจมีผลกระทบต่อ การเปลี่ยนแปลงที่สำคัญ กับโค้ดไคลเอ็นต์ แทนที่ true
ด้วย DDS_LOADER_FORCE_SRGB
และ false
ด้วย DDS_LOADER_DEFAULT
ในการเปิดตัวเดือนตุลาคม 2021 DGSLEffect ไม่รองรับการสร้างสกินโดยตรงอีกต่อไป ให้ใช้ SkinnedDGSLEffect ซึ่งได้มาจาก DGSLEffect แทน
เริ่มตั้งแต่การเปิดตัวเดือนมิถุนายน 2020 ไลบรารีนี้ใช้แฟล็กบิตมาสก์ enum ที่พิมพ์ตามคำแนะนำของส่วน มาตรฐาน C++ 17.5.2.1.3 ประเภทบิตมาสก์ สิ่งนี้อาจมีผลกระทบต่อ การเปลี่ยนแปลงอย่างรุนแรง ต่อรหัสลูกค้า:
คุณไม่สามารถส่งผ่าน 0
ตัวอักษรเป็นค่าสถานะของคุณได้ คุณต้องใช้ค่าแจงนับเริ่มต้นที่เหมาะสมแทน: AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
หรือ WIC_LOADER_DEFAULT
ใช้ประเภท enum แทน DWORD
หากสร้างค่าแฟล็กในเครื่องด้วยการดำเนินการบิตมาสก์ ตัวอย่างเช่น WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
โปรเจ็กต์ UWP และโปรเจ็กต์เดสก์ท็อป Win10 classic มีการกำหนดค่าสำหรับแพลตฟอร์ม 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) ก็อาจไม่สามารถสร้างเชเดอร์ที่จำเป็นทั้งหมดได้
การรองรับ Xbox One สำหรับ DirectX 11 ต้องใช้ Xbox One XDK รุ่นเก่า ดู DirectX Tool Kit รุ่นเดือนกุมภาพันธ์ 2023 หรือรุ่นก่อนหน้าสำหรับไฟล์โปรเจ็กต์ที่จำเป็น
ในการเปิดตัวเดือนตุลาคม 2024 เครื่องมือบรรทัดคำสั่ง xwbtool ยังรองรับตัวเลือกแบบยาวแบบ GNU โดยใช้ --
. สวิตช์ที่มีอยู่ทั้งหมดยังคงทำงานต่อไป MakeSpriteFont รองรับเฉพาะ --version
และ --help
สำหรับพารามิเตอร์สไตล์ POSIX
หากมีคำถาม ให้ลองใช้ Stack Overflow กับแท็ก directxtk หรือ DirectX Discord Server ในช่อง dx9-dx11-developers
สำหรับรายงานข้อผิดพลาดและการร้องขอคุณสมบัติ โปรดใช้ปัญหา GitHub สำหรับโปรเจ็กต์นี้
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคส่วนใหญ่กำหนดให้คุณยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
ควรส่งการทดสอบคุณสมบัติใหม่เป็นการประชาสัมพันธ์ไปยังพื้นที่เก็บข้อมูลชุดทดสอบ
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการ ผลิตภัณฑ์ หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft โดยได้รับอนุญาตนั้นอยู่ภายใต้และต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในเวอร์ชันแก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบ่งบอกถึงการสนับสนุนของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะต้องเป็นไปตามนโยบายของบุคคลที่สามเหล่านั้น
ชุดเครื่องมือ DirectX เป็นผลงานของ Shawn Hargreaves และ Chuck Walbourn โดยได้รับการสนับสนุนจาก Aaron Rodriguez Hernandez และ Dani Roman
ขอขอบคุณ Shanon Drone สำหรับรูปแบบไฟล์ SDKMESH
ขอขอบคุณ Adrian Tsai สำหรับการนำ geodesic sphere ไปใช้
ขอขอบคุณ Garrett Serack สำหรับความช่วยเหลือในการสร้างแพ็คเกจ NuGet สำหรับ DirectX Tool Kit
ขอขอบคุณ Roberto Sonnino สำหรับความช่วยเหลือเกี่ยวกับ CMO
, การเรนเดอร์ DGSL และแอนิเมชัน VS Starter Kit
ขอขอบคุณ Pete Lewis และ Justin Saunders สำหรับการนำ Normal-Mapped และ PBR Shaders ไปใช้
ขอขอบคุณ Andrew Farrier และ Scott Matloff สำหรับความช่วยเหลืออย่างต่อเนื่องในการตรวจสอบโค้ด