Oavsett om vi har ett low end- eller high end-system, förväntar vi oss alla att 3D-revolutionen i realtid kommer att fortsätta tills vi uppnår nära paritet med verkligheten. Framskjutningen stöds av många faktorer, inklusive ren hårdvaruprestanda och briljanta framsteg inom tekniker för att bättre approximera vad vi ser. Men det finns en annan sida av ekvationen utöver bara hårdvara och utvecklare: det finns grafik-API.
Till skillnad från CPU:er har grafikhårdvara (GPU) inte en gemensam instruktionsuppsättning som verktyg och programvara kan byggas på. För att få ut kraften i hårdvaran till allmänheten behöver vi ett gemensamt gränssnitt som fungerar oavsett vilken GPU som finns under. Det är överlåtet till grafikhårdvarudesignern att ta koden som genereras av detta applikationsprogrammeringsgränssnitt (API) och översätta den till något som deras chip kan använda. Eftersom det är utvecklarens enda kontaktpunkt är grafik-API:et otroligt viktigt. Den definierar hur mycket flexibilitet programmerare har när det gäller att använda hårdvara och formar världen av högpresterande 3D-grafik i realtid.
En del av nyckelarbetet som görs genom grafik-API:t är att ta beskrivningar av 3D-objekt i en 3D-värld, skicka dessa objekt och andra resurser till hårdvaran och sedan tala om för hårdvaran vad den ska göra med dem. Det finns en slags steg-för-steg-process som måste följas som vi vanligtvis kallar en pipeline. Graphics API pipelines har stadier där olika arbeten utförs. Här är den allmänna strukturen för en 3D-grafikpipeline:
Första vertexdata (information om positionen för formernas hörn) tas in och bearbetas. Sedan kan dessa former manipuleras ytterligare och bearbetas om det behövs. Efter detta bryts 3D-objekt ner från 3D-former genom att projicera dem till 2D-fragment som kallas pixlar (detta steg kallas rastrering), och sedan bearbetas dessa pixlar var och en genom att leta upp texturinformation och använda belysningstekniker och så vidare. När pixlar är färdigbearbetade matas de ut och visas på skärmen. Och det är den mil höga översikten över hur 3D-grafik fungerar.
Under de senaste dussin åren (det verkar längre, eller hur?) har vi sett tillverkare av 3D-grafikhårdvara accelerera två mycket framträdande API:er: OpenGL och DirectX.
Vi berörde nyligen framsteg som tangerar OpenGL i vår OpenCL-artikel, men idag kommer vårt fokus att ligga på DirectX. Microsofts DirectX grafik API används mycket mer i spelmotorer än OpenGL, till stor del eftersom DirectX tenderar att röra sig mycket snabbare och sätter ribban för både hårdvaran och DirectX när det gäller funktionsuppsättning och flexibilitet. Det gör alltid kommande versioner av DirectX spännande att prata om: de definierar hårdvarans framtida kapacitet och exponerar förbättrade verktyg för utvecklare. Kommande DirectX-versioner är glimtar in i vår grafiska framtid. För närvarande har vi många DirectX 9 och DirectX 10-spel tillgängliga och under utveckling, men DirectX 11 skymtar i horisonten.
Som vanligt kommer Microsoft att försöka tajma releasen av deras nästa DirectX-revision med releasen av kompatibel grafikhårdvara. Precis som förra gången kommer DirectX 11 även att släppas med Windows 7. Med Windows 7 Beta redan på gång förväntar vi oss att operativsystemet kommer att göras någon gång i år.
Microsoft har varit ganska aggressiva med Windows 7-schemaläggning i ljuset av avslaget av Vista, så det verkar som om de går till planen för att få ut allt förr snarare än senare. Det gick lite mer än 4 år mellan lanseringen av DirectX 9 och DirectX 10. När det kom ut på gatorna med Vista i januari 2007, har DirectX 10 precis fyllt 2 år och vi förväntar oss redan att det ska ersättas inom en mycket nära framtid. Som vi kommer att lära oss bör denna snabba övergång vara mycket bra för DirectX 11-användning eftersom DirectX 10 inte ens har blivit genomträngande än: många spel är fortfarande bara DirectX 9.
Men låt oss titta närmare på vad vi pratar om innan vi går vidare.