Direct2D - Direct2D

Od Wikipedia, Slobodna Enciklopedija

Pin
Send
Share
Send

Direct2D[1] je 2D vektor grafika sučelje za programiranje aplikacija (API) dizajnirao Microsoft i implementiran u Windows 10,[2] Windows 8, Windows 7 i Windows Server 2008 R2, I također Windows Vista i Windows Server 2008 (s Ažuriranje platforme instaliran).[3]

Direct2D iskorištava hardversko ubrzanje putem grafičke procesorske jedinice (GPU) pronađena u kompatibilnom grafičke kartice unutar osobnog računala, tableta, pametnog telefona i modernog grafičkog uređaja. Nudi visoku vizualnu kvalitetu i brze izvedbe prikazivanja, a istovremeno održava potpunu interoperabilnost s klasičnim API-jem Win32 grafike, kao što su GDI/ GDI + i suvremeni grafički API-ji poput Direct3D.[4]

Pregled

Direct2D je izvorni kod API zasnovan na C ++ koji se može nazvati upravljani kod i koristi "laganu COM"pristup[5] baš kao Direct3D, s minimalnom količinom apstrakcije. Međutim, za razliku od WPF i slično kao GDI / GDI +, Direct2D je API za prikazivanje "neposrednog načina" s jednostavnim BeginDraw / Draw / EndDraw pozivima; Direct2D nema koncept "scene" i ne koristi zadržane strukture stabla, a stanje prikazivanja zadržava se između poziva za crtanje.

Direct2D može smanjiti upotrebu CPU-a i upotrijebiti prikaz hardvera na grafičkoj kartici s minimalnom podrškom Direct3D Feature Level 9 s WDDM 1.1 vozača. Aplikacije ga mogu odlučiti koristiti isključivo s CPU-om, takozvanim generiranjem softvera koristeći ga zajedno s WARP10 u situacijama kada hardverska sposobnost nije dostupna, na primjer kada se izvodi unutar uređaja s minimalnom podrškom za GPU, ispod terminal usluga, Windows sesija 0ili kada se grafičko prikazivanje izvodi na udaljenom poslužitelju s grafičkim rezultatom koji se vraća na klijentski uređaj. Izvedba Direct2D i upotreba memorije linearno se skaliraju s primitivnim brojevima u softveru i hardveru.

Direct2D[6][7] podržava visokokvalitetno prikazivanje sa sljedećim ključnim značajkama:

  • Kvalitetno prikazivanje subpiksela putem DirectWrite za obje sive i ClearType tehnika
  • Per-primitivno antialiasing
  • Bézier geometrija crtati i ispunjavati
  • Operacije bogate geometrije (npr. Logičke operacije, proširenje puta, ocrtavanje itd.)
  • Složeni slojevi
  • Primitivni načini miješanja (npr. Prebacivanje izvora, kopiranje izvora, minimalno miješanje itd.)
  • Ugrađeni slike i prilagođeni efekti za prilagodbu fotografije, grafičku i transformaciju boja
  • Gradijent četkom i mrežicom
  • Popis naredbi za međuspremnik i ispis naredbi
  • Skalabilni potez tinte
  • Sprite serija za razvoj igara

Direct2D omogućuje potpunu interoperabilnost s GDI, GDI + i omogućuje prikazivanje na i s Direct3D površine, kao i na i iz konteksta GDI / GDI + uređaja (HDC). Može se učinkovito koristiti zajedno s Windows Imaging Component (WIC) za kodiranje / dekodiranje slika, a s DirectWrite za oblikovanje teksta i obradu fonta. Takva interoperabilnost omogućuje programerima da postupno zamjenjuju kritične putove koda Direct2D kodom bez potrebe za temeljitim popravkom cijelog izvornog koda. U vremenskom okviru Windows 10 projekt otvorenog koda tzv Win2D razvio je Microsoft kako bi dodatno pojednostavio upotrebu Direct2D i DirectWrite u sustavu Windows Univerzalna platforma za Windows (UWP) aplikacija. Win2D je vrlo učinkovit WinRT omot Direct2D i DirectWrite dizajniran od temelja za besprijekornu integraciju s XAML Canvas kontrolom uz očuvanje snage osnovnog grafičkog podsustava.

Naknadne verzije

Direct2D 1.1

Ažurirana verzija Direct2D pokrenuta je sa Windows 8 u listopadu 2012.[8] Bilo je i uzvratno na Windows 7 SP1 (ali ne i na Windows Vista) putem Ažuriranje platforme Windows 7.[9][10][11] Izvorna verzija Direct2D bila je vezana uz DirectX 11 (u hardveru, do Direct3D 10.1), dok se ova verzija Direct2D integrira s DirectX 11.1.[9] Windows 8 također je dodao interoperabilnost između XAML i Direct2D zajedno s Direct3D komponentama, koje se sve mogu kombinirati u aplikaciji.[12]

Direct2D 1.2

Nove značajke dodane su Direct2D s Windows 8.1 u listopadu 2013:[13] Realizacije geometrije,[14] API za Direct2D efekte,[15][16][17] API popisa naredbi, API-ji s više niti, prioritet prikazivanja po uređaju, podrška za JPEG YCbCr slike za manji trag memorije i podrška za blok komprimirane formate (DDS datoteke).

Direct2D 1.3

Izdanje Windows 10 u srpnju 2015. Direct2D donio je važna ažuriranja i nove značajke, poput poboljšanja performansi prikazivanja skalabilnog teksta bez rasterizacija fontova, mogućnost preuzimanja potrebnog fonta iz oblaka na zahtjev bez potrebe za korakom instalacije fonta, optimizacija za brže učitavanje slike i prikazivanje efekata slike te sofisticiraniji način primjene gradijentna četka korištenjem 2D mreže izrađene od gradijentnih zakrpa. Ovo je izdanje također predstavilo potpuno novo API proširenje za podršku digitalnoj tinti, koje potpuno koristi nova Preglednik Microsoft Edge kao i novo platno s tintom XAML kontrolirati.

Provedba

U svom radu iz 2012. o konkurentskom NV putu koji generira OpenGL proširenje, Mark Kilgard i Jeff Bolz objašnjavaju (i kritiziraju) interne dijelove Direct2D-a na sljedeći način: "Direct2D djeluje transformiranjem staza na CPU-u i izvođenjem ograničenog trapezoidnog tesselacija svakog puta. Rezultat je skup razmaka piksela trapezoidi i dodatnu zasjenjenu geometriju za izračunavanje frakcijskog pokrivanja lijevog i desnog ruba trapeza. GPU zatim rasterizira te trapeze i zasjenjenu geometriju. Dobivene performanse su općenito bolje od potpuno pristupa zasnovanih na CPU-u i ne zahtijevaju pomoćno spremište za multisample ili matrica stanja; Direct2D generira izravno u aliated framebuffer s pravilno uklonjenim rezultatima. Primarni nedostatak Direct2D-a je [što] krajnju izvedbu ne određuje GPU (radi prilično trivijalnu rasterizaciju), već CPU koji izvodi transformaciju i trapezoidnu teselaciju svake staze i Direct3D provjeru valjanosti. "[18]

U srpnju 2012. godine Windows 8 tim objavio je sljedeće na blogu Steven Sinofsky: "Da bismo poboljšali izvedbu prikazivanja geometrije u sustavu Windows 8, usredotočili smo se na smanjenje troškova CPU-a povezanih s tesselacijom na dva načina. Prvo smo optimizirali našu implementaciju tesselation-a prilikom prikazivanja jednostavnih geometrija poput pravokutnika, linija, zaobljenih pravokutnika i elipsa."[19] Ove uobičajene optimizacije tvrde da poboljšavaju performanse u rasponu od 184% do 438%, ovisno o primitivnom. Post se nastavio: "Drugo, da bismo poboljšali performanse pri generiranju nepravilne geometrije (npr. Geografske granice na karti), koristimo novu značajku grafičkog hardvera zvanu Ciljajte neovisnu rasterizaciju, ili TIR. TIR omogućuje Direct2D-u da troši manje procesorskih ciklusa na tesselaciju, tako da GPU-u može brže i učinkovitije davati upute za crtanje, bez žrtvovanja vizualne kvalitete. TIR je dostupan u novom GPU hardveru dizajniranom za Windows 8 koji podržava DirectX 11.1. "[19] Nakon toga uslijedila je referentna vrijednost korištenjem nekih 15 SVG-ovi, tvrdeći da se poboljšavaju performanse u rasponu od 151% do 523%. Odjeljak je zaključio: "Usko smo surađivali s našim grafičkim hardverskim partnerima kako bismo dizajnirali TIR. Zahvaljujući tom partnerstvu omogućena su dramatična poboljšanja. Hardver DirectX 11.1 već je danas na tržištu i radimo s našim partnerima kako bismo osigurali više TIR- sposobni proizvodi bit će široko dostupni. "[19]

Značajka TIR bila je među onima koje su izazvale "rat riječi" između Nvidia i AMD oko prosinca 2012. jer je Nvidia's Kepler GPU obitelj ne podržava ga, dok AMD-ovi GCN čini.[20] Kao odgovor na zahtjeve kupaca, zaposlenik Nvidijine službe za podršku objavio je da TIR ne može biti jednostavno implementiran na razini vozača, već zahtijeva novi hardver;[21][22] the Maxwell 2 arhitektura, predstavljena u rujnu 2014., takav je hardver.[23]

U Windows 8.1, Direct2D može koristiti hardverske tesselatore Direct3D11, ali samo zajedno s D2D1_FILL_MODE_ALTERNATE. Ako se koristi drugi način punjenja (npr. D2D1_FILL_MODE_WINDING) tada se Direct2D vraća na teselaciju na procesoru, ali i dalje koristi TIR za uklanjanje aliasa (ako je TIR dostupan). Budući da je hardverska tesselacija dostupna u osnovnom Direct3D11 (ne nužno 11.1), Microsoft je zatražio značajna poboljšanja performansi s Direct2D u sustavu Windows 8.1 (u odnosu na Windows 8) na hardveru koji nije TIR.[24]

Upotrebe i performanse

Internet Explorer 9 i novije verzije koriste Direct2D i DirectWrite za poboljšane performanse i vizualnu kvalitetu.[25][26][27] Podrška za Direct2D dodana je u alfa verzija od Firefox 3.7, otprilike udvostručujući brzinu prikazivanja.[28] (Firefox 4 također je dodao podršku za DirectWrite, ali to je postalo nesvakidašnjim za neke fontove u Firefoxu 7 zbog pritužbi korisnika na kvalitetu prikazivanja.[29] Google Chrome koristi vlastitu 2D knjižnicu tzv Skia, koji zauzvrat prikazuje KUT na Windowsima.[30]) U Firefox 70.0, na starom hardveru, Direct2D je onemogućen na starim grafičkim upravljačkim programima s crne liste ako im nedostaju značajke i ako je područje zatamnjeno, npr. u Google Maps.[31]

Ars TechnicaPeter Bright primijetio je u ljeto 2012. da "većina aplikacija za stolna računala ne koristi Direct2D."[32]

Microsoft Office 2013 podržava Direct2D + DirectWrite ili GDI +Otpiši za prikaz i tipografiju prikaza.[33]

Vidi također

Reference

  1. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx
  2. ^ "Što je novo u Direct2D i DirectWrite za Windows 10 (Kanal 9)". Kanal 9. Preuzeto 2015-12-03.
  3. ^ "Ažuriran Direct2D u ožujku DirectX SDK - Tomov blog - Početna stranica - TechNet blogovi". blogs.technet.com. 2009-03-24. Preuzeto 2011-12-26.
  4. ^ "Direct2D". MSDN. Preuzeto 2011-12-26.
  5. ^ https://stackoverflow.com/questions/38174095/what-electrely-is-lightweight-com
  6. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/ff729481(v=vs.85).aspx
  7. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dd756766(v=vs.85).aspx
  8. ^ https://msdn.microsoft.com/en-us/library/windows/hardware/dn653328(v=vs.85).aspx#tir
  9. ^ a b "Windows sa C ++ - predstavljanje Direct2D 1.1". Msdn.microsoft.com. 02.05.2014. Preuzeto 2014-08-09.
  10. ^ "Ažuriranje platforme za Windows 7 (Windows)". Msdn.microsoft.com. Preuzeto 2014-08-09.
  11. ^ Pooya Eimandar (2013). Programiranje igara DirectX 11.1. Packt Publishing Ltd. str. 45. ISBN 978-1-84969-481-0.
  12. ^ http://blogs.msdn.com/b/windowsappdev/archive/2012/03/15/combining-xaml-and-directx.aspx
  13. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh802478(v=vs.85).aspx
  14. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dn363632(v=vs.85).aspx
  15. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh973240(v=vs.85).aspx
  16. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh706316(v=vs.85).aspx
  17. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh973241(v=vs.85).aspx
  18. ^ Kilgard, Mark J. (2012). "GPU ubrzano prikazivanje puta". ACM transakcije na grafikama. 31 (6): 1–10. doi:10.1145/2366145.2366191.
  19. ^ a b c Rob Copeland, s doprinosima Srirama Subramaniana, Dana McLachlana, Kam VedBrata, Stevea Lima i Jianyea Lu, a uvod Steven Sinofsky Hardver ubrzava sve: Windows 8 grafika
  20. ^ "Rat riječi između NVIDIA-e i AMD-a preko podrške za DirectX 11.1 nastavlja se". Hardware Canucks. 17.12.2012. Preuzeto 2014-08-09.
  21. ^ https://forums.geforce.com/default/topic/511499/geforce-drivers/give-us-dx11-1-driver-support-on-dx11-cards-no-new-hardware-is-required-for- dx11-1 / post / 3642626 / # 3642626
  22. ^ http://nvidia.custhelp.com/app/answers/detail/a_id/3196/~/fermi-and-kepler-directx-api-support
  23. ^ http://www.anandtech.com/show/8526/nvidia-geforce-gtx-980-review/4
  24. ^ http://channel9.msdn.com/Events/Build/2013/3-191 19:00 do 20:00 i 55:00 do 56:30
  25. ^ tim, 11. kolovoza 2010. Slijedite tim na Twitteru (2010-08-11). "Firefox 4 kao psihodeličan kao IE9 s Direct2D omogućenim" Pisanje Tima Andersona ". Itwriting.com. Preuzeto 2014-08-06.CS1 maint: više imena: popis autora (veza)
  26. ^ Shankland, Stephen (2014-03-25). "Firefox 4 beta 4 dodaje hardversko ubrzanje". CNET. Preuzeto 2014-08-06.
  27. ^ Mozilla stavlja Roca na novu tvrdoću Microsofta • The Register
  28. ^ Objavio Gareth Halfacree, 27. studenog 2009. (2009-11-27). "Firefox 3.7 dobiva Direct2D podršku". bit-tech.net. Preuzeto 2014-08-09.
  29. ^ "Grafički dijelovi» Arhiva bloga »DirectWrite Prikazivanje teksta u Firefoxu 6". Blog.mozilla.org. 2011-08-11. Arhivirano iz Izvorna dana 10.08.2014. Preuzeto 2014-08-09.
  30. ^ "GPU ubrzano komponiranje u Chromeu - Chromium projekti". Preuzeto 2014-08-06.
  31. ^ Buckler, Craig (20. 12. 2011.). "Kako omogućiti WebGL za blokirane grafičke kartice u Firefoxu". Preuzeto 2019-10-21.
  32. ^ Svijetli, Peter (24. srpnja 2012.). "Ubrzanje GPU-a za Windows 8: dobre vijesti za Metro". Ars Technica. Preuzeto 2014-08-09.
  33. ^ "Office prihvaća novu Windows tehnologiju prikaza - Murray Sargent: Matematika u uredu - Početna stranica - MSDN blogovi". Blogs.msdn.com. 29.07.2012. Preuzeto 2014-08-09.

vanjske poveznice


Pin
Send
Share
Send