กลับไปหน้าบทความ

อ่าน 7 นาที

ไดเร็กต์2ดี

Direct2D [ 1 ] เป็น อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) กราฟิก เวกเตอร์ 2 มิติ ที่ออกแบบโดย Microsoft และใช้งานใน Windows 10 [ 2 ] Windows 8 , Windows 7 และ Windows Server...

ไดเร็กต์2ดี

Direct2D [ 1 ]เป็นอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) กราฟิกเวกเตอร์2 มิติ ที่ออกแบบโดย Microsoftและใช้งานในWindows 10 [ 2 ] Windows 8 , Windows 7และWindows Server 2008 R2รวมถึงWindows VistaและWindows Server 2008 (เมื่อ ติดตั้ง Platform Update แล้ว ) [ 3 ]

Direct2D ใช้ประโยชน์จากการเร่งความเร็วฮาร์ดแวร์ผ่านหน่วยประมวลผลกราฟิก ( GPU ) ที่พบในการ์ดกราฟิก ที่เข้ากันได้ภายในคอมพิวเตอร์ส่วนบุคคล แท็บเล็ต สมาร์ทโฟน และอุปกรณ์กราฟิกสมัยใหม่ โดยให้คุณภาพภาพสูงและประสิทธิภาพการเร เดอร์ที่รวดเร็ว ในขณะที่ยังคงรักษาความสามารถในการทำงานร่วมกันอย่างเต็มที่กับAPI กราฟิก Win32 แบบคลาสสิก เช่นGDI /GDI+ และ API กราฟิกสมัยใหม่ เช่นDirect3D [ 4 ]

ภาพรวม

Direct2D เป็น API โค้ดเนทีฟที่ใช้C++ซึ่งสามารถเรียกใช้โดยโค้ดจัดการและใช้แนวทาง " COM น้ำหนักเบา " [ 5 ]เช่นเดียวกับDirect3Dโดยมีนามธรรมน้อยที่สุด อย่างไรก็ตาม แตกต่างจากWPFและคล้ายกับ GDI/GDI+ Direct2D เป็น API การเรนเดอร์แบบ "โหมดทันที" ที่มีการเรียก BeginDraw/Draw/EndDraw อย่างง่าย Direct2D ไม่มีแนวคิดของ "ฉาก" และไม่ใช้โครงสร้างต้นไม้ที่เก็บรักษาไว้ และสถานะการเรนเดอร์จะถูกเก็บรักษาไว้ระหว่างการเรียกวาด

Direct2D สามารถลดการใช้งาน CPU และใช้การเรนเดอร์ด้วยฮาร์ดแวร์บนการ์ดกราฟิกที่มีการรองรับ Direct3D Feature Level 9 ขั้นต่ำ พร้อม ไดรเวอร์ WDDM 1.1ได้ แอปพลิเคชันสามารถเลือกใช้เฉพาะ CPU หรือที่เรียกว่าการเรนเดอร์ด้วยซอฟต์แวร์ โดยใช้ร่วมกับWARP10ในสถานการณ์ที่ฮาร์ดแวร์ไม่รองรับ เช่น เมื่อทำงานบนอุปกรณ์ที่มีการรองรับ GPU ขั้นต่ำ ภายใต้บริการเทอร์มินัล เซสชัน Windows 0หรือเมื่อทำการเรนเดอร์กราฟิกบนเซิร์ฟเวอร์ระยะไกลและส่งผลลัพธ์กราฟิกกลับไปยังอุปกรณ์ไคลเอ็นต์ ประสิทธิภาพและการใช้หน่วยความจำของ Direct2D จะเพิ่มขึ้นตามสัดส่วนเชิงเส้นกับจำนวนพรีมิทีฟทั้งในซอฟต์แวร์และฮาร์ดแวร์

Direct2D [ 6 ] [ 7 ]รองรับการเรนเดอร์คุณภาพสูงด้วยคุณสมบัติหลักดังต่อไปนี้:

  • การแสดงผลข้อความระดับซับพิกเซลคุณภาพสูงผ่านDirectWriteสำหรับทั้งเทคนิค สีเทาและ ClearType
  • การป้องกันรอยหยักก่อนแบบดั้งเดิม
  • การวาดและเติมรูปทรงเรขาคณิตแบบเบซิเยร์
  • การดำเนินการทางเรขาคณิตขั้นสูง (เช่นการดำเนินการทางตรรกะแบบบูลีนการขยายเส้นทาง การสร้างเส้นขอบ ฯลฯ)
  • ชั้นคอมโพสิต
  • โหมดการผสมพื้นฐาน (เช่น การผสมทับต้นฉบับ การผสมสำเนาต้นฉบับ การผสมขั้นต่ำ ฯลฯ)
  • เอฟเฟ็กต์ภาพสำเร็จรูปและเอฟเฟ็กต์แบบกำหนดเองสำหรับการปรับแต่งภาพถ่าย การแปลงกราฟิกและสี
  • แปรง ไล่ระดับสีและตาข่าย
  • รายการคำสั่งสำหรับการบัฟเฟอร์และการพิมพ์คำสั่ง
  • เส้นหมึกที่ปรับขนาดได้
  • ชุด สไปรท์สำหรับการพัฒนาเกม

Direct2D ช่วยให้สามารถทำงานร่วมกับ GDI, GDI+ ได้อย่างสมบูรณ์ และอนุญาตให้เรนเดอร์ไปยังและจากพื้นผิว Direct3D รวมถึงไปยังและจากบริบทอุปกรณ์ GDI/GDI+ (HDC) ได้ สามารถใช้งานได้อย่างมีประสิทธิภาพร่วมกับWindows Imaging Component (WIC) สำหรับการเข้ารหัส/ถอดรหัสภาพ และกับ DirectWrite สำหรับการจัดรูปแบบข้อความและการประมวลผลฟอนต์ ความสามารถในการทำงานร่วมกันดังกล่าวช่วยให้นักพัฒนาสามารถค่อยๆ แทนที่เส้นทางโค้ดที่สำคัญด้วยโค้ด Direct2D โดยไม่จำเป็นต้องปรับปรุงซอร์สโค้ดทั้งหมด ในช่วงเวลาของ Windows 10 ไมโครซอฟต์ได้พัฒนาโครงการโอเพนซอร์สชื่อ Win2D เพื่อลดความซับซ้อนในการใช้งาน Direct2D และ DirectWrite ใน แอปพลิเคชัน Universal Windows Platform (UWP) Win2D เป็นตัวห่อหุ้ม WinRTที่มีประสิทธิภาพสูงของ Direct2D และ DirectWrite ซึ่งได้รับการออกแบบมาตั้งแต่เริ่มต้นเพื่อผสานรวมเข้ากับตัวควบคุม XAML Canvas ได้อย่างราบรื่น ในขณะที่ยังคงรักษาประสิทธิภาพของระบบกราฟิกพื้นฐานไว้

เวอร์ชันต่อมา

Direct2D 1.1

Direct2D เวอร์ชันอัปเดตเปิดตัวพร้อมกับWindows 8ในเดือนตุลาคม 2012 [ 8 ]นอกจากนี้ยังมีการย้อนกลับไปใช้ใน Windows 7 SP1 (แต่ไม่ใช่ Windows Vista) ผ่านการอัปเดตแพลตฟอร์ม Windows 7 [ 9 ] [ 10 ] [ 11 ] Direct2D เวอร์ชันดั้งเดิมนั้นเชื่อมโยงกับDirectX 11 (ในฮาร์ดแวร์ ใช้ Direct3Dสูงสุด10.1) ในขณะที่ Direct2D เวอร์ชันนี้ผสานรวมกับ DirectX 11.1 [ 9 ] Windows 8 ยังเพิ่มความสามารถในการทำงานร่วมกันระหว่างXAMLและ Direct2D พร้อมกับส่วนประกอบ Direct3D ซึ่งสามารถผสมผสานกันได้ในแอปพลิเคชัน[ 12 ]

Direct2D 1.2

มีการเพิ่มคุณสมบัติใหม่ให้กับ Direct2D ในWindows 8.1ในเดือนตุลาคม 2013: [ 13 ]การรับรู้ทางเรขาคณิต [ 14 ] API เอฟเฟกต์ Direct2D [ 15 ] [ 16 ] [ 17 ] API รายการคำสั่ง API มัลติเธรด ลำดับความสำคัญในการเรนเดอร์ต่ออุปกรณ์ การสนับสนุนภาพ JPEG YCbCr เพื่อลดการใช้หน่วยความจำและการสนับสนุนรูปแบบการบีบอัดบล็อก (ไฟล์ DDS)

Direct2D 1.3

การเปิดตัวWindows 10ในเดือนกรกฎาคม 2015 นำมาซึ่งการอัปเดตที่สำคัญและคุณสมบัติใหม่ ๆ สำหรับ Direct2D เช่น การปรับปรุงประสิทธิภาพการแสดงผลข้อความที่ปรับขนาดได้โดยไม่ต้องแปลงฟอนต์เป็นภาพ การดาวน์โหลดฟอนต์ที่ต้องการจากคลาวด์ได้ตามต้องการโดยไม่ต้องติดตั้งฟอนต์ การเพิ่มประสิทธิภาพสำหรับการโหลดภาพและการแสดงผลเอฟเฟกต์ภาพที่เร็วขึ้น และวิธีการที่ซับซ้อนยิ่งขึ้นในการใช้แปรงไล่ระดับสีผ่านการใช้ตาข่าย 2 มิติที่สร้างจากส่วนไล่ระดับสี การเปิดตัวครั้งนี้ยังได้แนะนำส่วนขยาย API ใหม่เพื่อรองรับหมึกดิจิทัล ซึ่งถูกนำไปใช้อย่างมากโดยเบราว์เซอร์ Microsoft Edgeรวมถึงตัวควบคุม XAML ของผืนผ้าใบหมึกด้วย

การดำเนินการ

ในบทความปี 2012 เกี่ยวกับส่วนขยาย OpenGL สำหรับการเรนเดอร์เส้นทาง NV ที่แข่งขันกันMark Kilgardและ Jeff Bolz อธิบาย (และวิจารณ์) กลไกภายในของ Direct2D ดังนี้: "Direct2D ทำงานโดยการแปลงเส้นทางบน CPU จากนั้นทำการแบ่ง เส้นทาง ออกเป็นรูป สี่เหลี่ยมคางหมูแบบจำกัด ผลลัพธ์ที่ได้คือชุดของรูปสี่เหลี่ยมคางหมู ในพื้นที่พิกเซล และรูปทรงเรขาคณิตที่แรเงาเพิ่มเติมเพื่อคำนวณความครอบคลุมแบบเศษส่วนสำหรับขอบด้านซ้ายและด้านขวาของรูปสี่เหลี่ยมคางหมู รูปสี่เหลี่ยมคางหมูและรูปทรงเรขาคณิตที่แรเงาเหล่านี้จะถูกเรนเดอร์โดย GPU ประสิทธิภาพที่ได้โดยทั่วไปดีกว่าวิธีการที่ใช้ CPU เพียงอย่างเดียวและไม่ต้องการพื้นที่จัดเก็บเสริมสำหรับสถานะมัลติแซมเปิลหรือสเตนซิล Direct2D เรนเดอร์โดยตรงไปยังเฟรมบัฟเฟอร์ที่มีเอเลียสพร้อมผลลัพธ์ที่ป้องกันเอเลียสอย่างเหมาะสม ข้อเสียเปรียบหลักของ Direct2D คือประสิทธิภาพสูงสุดไม่ได้ถูกกำหนดโดย GPU (ซึ่งทำการเรนเดอร์แบบง่ายๆ) แต่ถูกกำหนดโดย CPU ที่ทำการแปลงและการแบ่งเส้นทางออกเป็นรูปสี่เหลี่ยมคางหมู ของแต่ละเส้นทางและงานตรวจสอบ Direct3D" [ 18 ]

ในเดือนกรกฎาคม พ.ศ. 2555 ทีม Windows 8ได้โพสต์ข้อความต่อไปนี้ในบล็อกของSteven Sinofsky : "เพื่อปรับปรุงประสิทธิภาพการเรนเดอร์เรขาคณิตใน Windows 8 เราได้มุ่งเน้นไปที่การลดต้นทุน CPU ที่เกี่ยวข้องกับการแบ่งส่วนย่อยในสองวิธี วิธีแรก เราได้ปรับปรุงการใช้งานการแบ่งส่วนย่อยเมื่อเรนเดอร์เรขาคณิตแบบง่าย เช่น สี่เหลี่ยม เส้น สี่เหลี่ยมมุมมน และวงรี" [ 19 ]การปรับปรุงประสิทธิภาพในกรณีทั่วไปเหล่านี้อ้างว่าช่วยปรับปรุงประสิทธิภาพได้ในช่วง 184% ถึง 438% ขึ้นอยู่กับรูปทรงเรขาคณิต โพสต์ดังกล่าวกล่าวต่อว่า: "ประการที่สอง เพื่อปรับปรุงประสิทธิภาพเมื่อเรนเดอร์เรขาคณิตที่ไม่สม่ำเสมอ (เช่น ขอบเขตทางภูมิศาสตร์บนแผนที่) เราใช้คุณสมบัติฮาร์ดแวร์กราฟิกใหม่ที่เรียกว่าTarget Independent Rasterizationหรือ TIR TIR ช่วยให้ Direct2D ใช้รอบ CPU น้อยลงในการแบ่งส่วนย่อย ดังนั้นจึงสามารถส่งคำสั่งการวาดไปยัง GPU ได้เร็วและมีประสิทธิภาพมากขึ้นโดยไม่ลดทอนคุณภาพของภาพ TIR มีอยู่ในฮาร์ดแวร์ GPU ใหม่ที่ออกแบบมาสำหรับ Windows 8 ซึ่งรองรับ DirectX 11.1" [ 19 ]ตามมาด้วยการทดสอบประสิทธิภาพโดยใช้SVG ประมาณ 15 รายการ โดยอ้างว่าประสิทธิภาพดีขึ้นในช่วง 151% ถึง 523% ส่วนนี้สรุปว่า: "เราทำงานอย่างใกล้ชิดกับพันธมิตรด้านฮาร์ดแวร์กราฟิกของเราเพื่อออกแบบ TIR การปรับปรุงอย่างมากเกิดขึ้นได้เนื่องจากความร่วมมือดังกล่าว ฮาร์ดแวร์ DirectX 11.1 มีวางจำหน่ายในตลาดแล้วในปัจจุบัน และเรากำลังทำงานร่วมกับพันธมิตรของเราเพื่อให้แน่ใจว่าผลิตภัณฑ์ที่รองรับ TIR จะมีวางจำหน่ายอย่างแพร่หลายมากขึ้น" [ 19 ]

คุณสมบัติ TIR เป็นหนึ่งในคุณสมบัติที่ก่อให้เกิด "สงครามคำพูด" ระหว่างNvidiaและAMDในช่วงประมาณเดือนธันวาคม 2012 เนื่องจากตระกูล GPU Kepler ของ Nvidia ไม่รองรับ ในขณะที่GCN ของ AMD รองรับ[ 20 ]เพื่อตอบสนองต่อความต้องการของลูกค้า เจ้าหน้าที่ฝ่ายสนับสนุนของ Nvidia ได้โพสต์ว่า TIR ไม่สามารถนำไปใช้งานได้ง่ายๆ ในระดับไดรเวอร์ แต่ต้องใช้ฮาร์ดแวร์ใหม่[ 21 ] [ 22 ]สถาปัตยกรรมMaxwell 2ซึ่งเปิดตัวในเดือนกันยายน 2014 เป็นฮาร์ดแวร์ดังกล่าว[ 23 ]

ในWindows 8.1 Direct2D สามารถใช้ฮาร์ดแวร์เทสเซลเลเตอร์ Direct3D11 ได้ แต่เฉพาะเมื่อใช้ร่วมกับ โหมดเติมอื่น (เช่น ) เท่านั้น D2D1_FILL_MODE_ALTERNATEหากใช้โหมดเติมอื่น (เช่นD2D1_FILL_MODE_WINDING) Direct2D จะกลับไปใช้เทสเซลเลชันบน CPU แต่ยังคงใช้ TIR สำหรับการลดรอยหยัก (หากมี TIR) เนื่องจากฮาร์ดแวร์เทสเซลเลชันมีอยู่ใน Direct3D11 พื้นฐาน (ไม่จำเป็นต้องเป็น 11.1) Microsoft จึงอ้างว่ามีการปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญด้วย Direct2D ใน Windows 8.1 (เทียบกับ Windows 8) บนฮาร์ดแวร์ที่ไม่มี TIR [ 24 ]

การนำไปใช้และประสิทธิภาพ

Peter Bright จากArs Technica ตั้งข้อสังเกตในช่วงฤดูร้อนปี 2012 ว่า "แอปพลิเคชันเดสก์ท็อปส่วนใหญ่ไม่ได้ใช้ Direct2D" [ 25 ]

เว็บเบราว์เซอร์

Internet Explorer 9และเวอร์ชันที่ใหม่กว่าใช้ Direct2D และDirectWriteเพื่อประสิทธิภาพและคุณภาพการแสดงผลที่ดีขึ้น[ 26 ] [ 27 ] [ 28 ]

Google Chromeไม่เคยนำ Direct2D มาใช้ และตั้งแต่นั้นมาก็ใช้ไลบรารี 2D ของตัวเองที่เรียกว่าSkiaซึ่งแสดงผลผ่านANGLEบน Windows [ 29 ] สิ่งนี้ใช้ได้กับเบราว์เซอร์ทั้งหมดที่แยกออกมาจากโครงการโอเพนซอร์ส Chromiumของ Google ในภายหลังเช่น Opera, Vivaldi และ Microsoft Edge

อย่างไรก็ตาม Mozilla Firefoxได้นำ Direct2D มาใช้ในเวอร์ชัน 3.7 ซึ่งทำให้ความเร็วในการแสดงผลเพิ่มขึ้นเป็นสองเท่าเมื่อเทียบกับเวอร์ชันก่อนหน้า[ 30 ] (Firefox 4 ยังเพิ่มการรองรับ DirectWrite ด้วย แต่ถูกทำให้ไม่เป็นค่าเริ่มต้นสำหรับฟอนต์บางตัวใน Firefox 7 เนื่องจากผู้ใช้บ่นเกี่ยวกับคุณภาพการแสดงผล[ 31 ] ) ในFirefox 70.0 บนฮาร์ดแวร์เก่า Direct2D จะถูกปิดใช้งานในไดรเวอร์กราฟิกเก่าที่อยู่ในบัญชีดำ หากไดรเวอร์เหล่านั้นขาดคุณสมบัติ และพื้นที่บางส่วนจะถูกทำให้เป็นสีดำ เช่น ในGoogle Maps [ 32 ] ในปี 2025 ใน Firefox เวอร์ชัน 146.0 การรองรับ Direct2D ถูกลบออกจากแอปพลิเคชันโดยสิ้นเชิง Mozilla ได้เปลี่ยนไปใช้การรองรับ Skia ในเวอร์ชันก่อนหน้าแล้ว[ 33 ]

ไมโครซอฟต์ออฟฟิศ

Microsoft Office 2013 รองรับ การแสดงผลและการจัดรูปแบบตัวอักษรด้วย Direct2D+DirectWrite หรือ GDI+ Uniscribe [ 34 ]

ดูเพิ่มเติม

  • หน้าหลัก Direct2D บน MSDNพร้อมลิงก์ไปยังคู่มือการเขียนโปรแกรมคุณสมบัติ ใหม่ ในWindows 8.1 การทำงานร่วมกับ Direct3Dและอื่นๆ
  • บล็อกของ Thomas Olsen หัวหน้าทีมพัฒนา Direct2D
  • บล็อกของ Tom Mulcahy นักพัฒนา Direct2D
  • Windows 7: แนะนำ Direct2D และ DirectWrite - วิดีโอจากงาน PDC 2008
  • ชุดโค้ด Windows API สำหรับ Microsoft .NET Framework - ช่วยให้สามารถพัฒนาแอปพลิเคชัน Direct2D ด้วยโค้ดแบบ Managed Code ได้
  • ขอแนะนำ Direct2D - นิตยสาร MSDN ฉบับเดือนมิถุนายน 2552
  • การวาดภาพด้วย Direct2D - นิตยสาร MSDN ฉบับเดือนกันยายน 2552
  • API Direct2D สำหรับ Microsoft .Net Framework 4 เก็บถาวรเมื่อ 2011-07-08 ที่Wayback Machine - API Direct2D สำหรับ Microsoft .Net Framework 4
  • คำขอของ USPTO สำหรับการแปลงภาพแรสเตอร์แบบไม่ขึ้นกับเป้าหมาย
  • คู่มือการย้ายระบบ Direct2D 1.1 สำหรับนักพัฒนา Windows 7
  • คอลัมน์ของCharles Petzold เกี่ยวกับ DirectX มีบทความหลายเรื่องเกี่ยวกับ Direct2D ตั้งแต่บทความเบื้องต้น เช่นสามเหลี่ยมและการเรียงตัว ของรูปทรงเรขาคณิต หรือรูปทรงเรขาคณิต Direct2D และการปรับแต่ง ไปจนถึงบทความขั้นสูง เช่นการระบายสีด้วยนิ้วมือโดยใช้รูปทรงเรขาคณิต Direct2D , พอร์ทัล 2 มิติสู่โลก 3 มิติเป็นต้น

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Direct2D&oldid=1336366332 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไดเร็กต์2ดี

Direct2D [ 1 ] เป็น อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) กราฟิก เวกเตอร์ 2 มิติ ที่ออกแบบโดย Microsoft และใช้งานใน Windows 10 [ 2 ] Windows 8 , Windows 7 และ Windows Server...

ภาพรวม

Direct2D เป็น API โค้ดเนทีฟ ที่ใช้ C++ ซึ่งสามารถเรียกใช้โดย โค้ดจัดการ และใช้แนวทาง " COM น้ำหนักเบา " [ 5 ] เช่นเดียวกับ Direct3D โดยมีนามธรรมน้อยที่สุด อย่างไรก็ตาม แตกต่างจาก WPF และคล้ายกับ GDI/GDI+ Direct2D เป็น API การเรนเดอร์แบบ "โหมดทันที"...

Direct2D 1.1

Direct2D เวอร์ชันอัปเดตเปิดตัวพร้อมกับ Windows 8 ในเดือนตุลาคม 2012 [ 8 ] นอกจากนี้ยัง มีการย้อนกลับไป ใช้ใน Windows 7 SP1 (แต่ไม่ใช่ Windows Vista) ผ่าน การอัปเดตแพลตฟอร์ม Windows 7 [ 9 ] [ 10 ] [ 11 ] Direct2D เวอร์ชันดั้งเดิมนั้นเชื่อมโยงกับ DirectX 11...

Direct2D 1.2

มีการเพิ่มคุณสมบัติใหม่ให้กับ Direct2D ใน Windows 8.1 ในเดือนตุลาคม 2013: [ 13 ] การรับรู้ทางเรขาคณิต [ 14 ] API เอฟเฟกต์ Direct2D [ 15 ] [ 16 ] [ 17 ] API รายการคำสั่ง API มัลติเธรด ลำดับความสำคัญในการเรนเดอร์ต่ออุปกรณ์ การสนับสนุนภาพ JPEG YCbCr เพื่อลด การ...