Grafik med hög återgivning med DirectX
Windows-programutvecklare har länge använt Microsoft DirectX för att tillhandahålla högkvalitativ, maskinvaruaccelererad 3D-grafik. När tekniken debuterade 1995 kunde utvecklare tillhandahålla högkvalitativ 3D-grafik för spel och tekniska program för spelare och proffs som är villiga att betala extra för ett 3D-grafikkort. Nu är även de billigaste datorerna kompatibla 3D-grafikmaskinvara.
För att dra nytta av dessa grafikfunktioner introducerade Windows Vista WDDM-infrastrukturen (Windows Display Driver Model) för DirectX som gjorde det möjligt för flera program och tjänster att dela resurserna i grafikprocessorn (GPU). Desktop Window Manager (DWM) använder den här tekniken för att animera aktivitetsväxling i 3D, tillhandahålla dynamiska miniatyrbilder av programfönster och för att tillhandahålla Windows Aero-glaseffekter för skrivbordsprogram.
Windows 7 lägger ännu mer grafikfunktion i händerna på programutvecklare. Med en ny uppsättning DirectXAPIs kan Microsoft Win32-utvecklare dra nytta av de senaste innovationerna i GPU:er för att lägga till snabb, skalbar, högkvalitativ grafik, 2D- och 3D-grafik, text och bilder i sina program. På den senaste LCD- visas kan DirectXAPIs visa skrivbords- och fönsterinnehåll med hjälp av färgdjup som är större än 8 bitar per färgkomponent.
Med DirectX kan Win32-utvecklare också använda GPU:ns parallellitet för generell beräkning, till exempel bildbearbetning, och kan återges till DirectX 10-maskinvara, DirectX 9-maskinvara, PROCESSOR eller till en fjärransluten Windows-dator. Dessa tekniker har utformats för att samverka med Windows Graphics Device Interface (GDI) och Windows GDI+, vilket säkerställer att utvecklare enkelt kan bevara sina befintliga investeringar i Win32-kod. (Se Nyheter i DirectX SDK för mars 2009.)
Dessa förbättrade grafikfunktioner tillhandahålls av följande COM--baserade API:er:
- Direct2D- för ritning av 2D-grafik.
- DirectWrite för att ordna och återge text.
- Windows Imaging Component för bearbetning och visning av bilder.
- Direct3D 10 för ritning av 3D-grafik.
- Direct3D 11 för att rita 3D-grafik och ge åtkomst till nästa generations GPU-tekniker, till exempel tessellation, begränsat stöd för texturströmning och allmän databehandling.
- DirectX Graphics Infrastructure (DXGI) för att hantera lokala och fjärranslutna bildskärmsenheter och GPU-resurser och tillhandahålla samverkan mellan DirectX och GDI.
Direct2D
Direct2D bygger på Microsoft Direct3D 10 och erbjuder Win32-utvecklare omedelbart läge, lösningsoberoende 2D-API:er som använder kraften i nästa generations grafikmaskinvara, men ändå samverkar väl med dagens GDI/GDI+-program och Direct3D 10-program. Direct2D ger högkvalitativ 2D-rendering med prestanda som är överlägsen GDI och GDI+. Det ger Win32-utvecklare bättre kontroll över resurser och deras hantering. (Se Direct2D.)
DirectWrite
Många av dagens program behöver stöd för textrendering av hög kvalitet, lösningsoberoende dispositionsteckensnitt och fullständigt stöd för Unicode-text och layout. DirectWrite, en ny DirectX-komponent, innehåller dessa funktioner med mera:
- Ett enhetsoberoende textlayoutsystem som förbättrar textläsbarheten i dokument och i användargränssnittet.
- ClearType textåtergivning av hög kvalitet som kan använda GDI, Direct2Deller programspecifik återgivningsteknik.
- Maskinvaruaccelererad text när den används med Direct2D-.
- Stöd för text i flera format.
- Stöd för avancerade typografifunktioner i OpenType teckensnitt.
- Stöd för layout och återgivning av text på alla språk som stöds.
- GDI-kompatibel layout och återgivning.
Med DirectWrite- teckensnittssystem kan du använda teckensnitt var som helst, där användarna inte behöver utföra ett separat installationssteg bara för att använda ett teckensnitt och en förbättrad strukturell hierarki för teckensnittsgruppering för att hjälpa till med manuell eller programmatisk teckensnittsidentifiering. API:erna stöder mätning, ritning och träfftestning av text i flera format. DirectWrite hanterar text på alla språk som stöds för globala och lokaliserade program och bygger på den nyckelspråksinfrastruktur som finns i Windows 7. DirectWrite innehåller också api:er för glyph-återgivning på låg nivå för utvecklare som vill utföra sin egen layout och Unicode-till-glyph-bearbetning. (Se DirectWrite.)
Windows Imaging-komponent
I Windows Vista introducerade Windows Imaging Component ett utökningsbart ramverk för att arbeta med bilder och bildmetadata. De bildformat som stöds av Windows Imaging Component är JPEG-, PNG-och TIFF-, och metadataformaten som stöds omfattar XMP- och EXIF-. Med Windows 7 breddar Windows Imaging Component sin standardefterlevnad genom att ge stöd för progressiv avkodning av bilder, utökade PNG- funktioner, GIF- metadata och metadata som sträcker sig över APPn- segment. (Se Nyheter för WIC i Windows 7.)
Direct3D 11
Microsoft Direct3D 11 utökar funktionerna i Direct3D 10-pipelinen och ger Windows 7-spel och avancerade 3D-program effektiv, robust och skalbar åtkomst till den kommande generationen GPU:er och processorer med flera kärnor. Förutom funktionerna i Direct3D 10 introducerar Direct3D 11 flera nya funktioner.
Geometri- och högordningsytor kan nu tesselleras för att stödja skalbart, dynamiskt innehåll i patch- och indelningsytans representationer.
För att utnyttja den parallella bearbetningskraft som är tillgänglig från flera CPU-kärnor ökar multitrådning antalet potentiella återgivningsanrop per bildruta genom att distribuera program-, körnings- och drivrutinsanrop över flera kärnor. Dessutom har resursskapande och hantering optimerats för flertrådad användning, vilket möjliggör effektivare dynamisk strukturhantering för strömning.
Nya beräkningsskuggor för generell användning har skapats för Direct3D 11. Till skillnad från befintliga skuggningar är dessa tillägg till den programmerbara pipelinen som gör att ditt program kan utföra mer arbete helt på GPU:n, oberoende av processorn. DrawAuto, som introducerades i Direct3D 10, har utökats för att interagera med en beräkningskuggare.
Flera förbättringar har gjorts i skuggningsspråket på hög nivå (HLSL), till exempel en begränsad form av dynamisk länkning i skuggningar för att förbättra specialiseringskomplexiteten och objektorienterade programmeringskonstruktioner som klasser och gränssnitt. (Se Nyheter i DirectX SDK för mars 2009.)
Förbättringar av Direct3D 10
Direct3D 10 innehåller en omdesignad grafikpipeline med programmerbara skuggningssteg och oföränderliga tillståndsobjekt för initiering av de fasta funktionsstegen. Tillståndsobjekten förenklar pipelinen och förbättrar prestandan genom att minimera antalet tillståndsändringar som krävs. Programmability of shader stages (Programmering av skuggningssteg) erbjuder nu språktillägg på hög nivå för skuggning för att stödja obegränsade skuggningsinstruktioner, generaliserade skuggningsresurser samt heltals- och bitvisberäkningar.
Pipelinen introducerar också geometriskuggningssteget, som avlastar arbetet helt från processorn till GPU:n. Med den här nya fasen kan du skapa geometri, strömma data till minnet och återge geometrin utan cpu-interaktion.
Flera andra förbättringar är särskilt utformade för snabbare prestanda. Predikad rendering utför ocklusionsgallring för att minska mängden geometri som återges. Instancing-API:er kan avsevärt minska mängden geometri som måste överföras till GPU:n genom att rita flera instanser av liknande objekt. Med strukturmatriser kan GPU:n växla textur utan cpu-åtgärder.
Flera tillägg har gjorts i Direct3D 10 och Direct3D 11 för att utöka omfånget av konfigurationer som kan riktas mot dessa API:er. Windows Advanced Rasterization Platform (WARP) implementerar snabb, skalbar processoråtergivning med flera kärnor för Direct3D 10, vilket möjliggör fullfunktionsgrafikrendering på system utan grafikmaskinvara. Tillägget av nya "funktionsnivåer", som särskilt kallas Direct3D 10 Level 9, gör det möjligt för Direct3D 10 och Direct3D 11APIs att köra Microsoft Direct3D 9-klass maskinvara, vilket utökar antalet konfigurationer som ett Direct3D 10- eller Direct3D 11-program kan rikta sig till nästan alla datorsystem på marknaden. (Se Direct3D 10 Graphics.)
DirectX/GDI-samverkan
I Windows Vista skiljer sig beteendet för ett program som använder både DirectX och GDI för att rendera till en delad yta beroende på om DWM är på eller av. När DWM är aktiverat fungerar dessutom program som använder både DirectX och GDI på olika sätt i Windows Vista än i Windows XP. Detta gjorde att många ISV:er inaktiverade DWM när de körde sina program i Windows Vista för att säkerställa konsekvent beteende. Med förbättringarna av DirectX i Windows 7 kan ett program nu fritt blanda DirectX och GDI utan att inaktivera DWM. Windows 7 har också bättre prestanda för scenarier som kräver samverkan mellan DirectX och GDI genom att använda effektivare Direct3D 10-API:er. (Se Direct2D och GDI Interoperation Overview.)