Dela via


Direct3D-enheter (Direct3D 9)

En Direct3D-enhet är återgivningskomponenten i Direct3D. Den kapslar in och lagrar återgivningstillståndet. Dessutom utför en Direct3D-enhet transformeringar och belysningsåtgärder och rastrerar en bild till en yta.

Arkitektoniskt innehåller Direct3D-enheter en transformeringsmodul, en belysningsmodul och en rastreringsmodul, som följande diagram visar.

diagram över direct3d-enhetsarkitekturen

Direct3D stöder för närvarande två huvudtyper av Direct3D-enheter:

  • En hal-enhet med maskinvaruaccelererad rasterisering och skuggning med både maskin- och programvaruhörnbearbetning
  • En referensenhet

Du kan se dessa enheter som två separata drivrutiner. Programvara och referensenheter representeras av programvarudrivrutiner och hal-enheten representeras av en maskinvarudrivrutin. Det vanligaste sättet att dra nytta av dessa enheter är att använda hal-enheten för leveransprogram och referensenheten för funktionstestning. Dessa tillhandahålls av tredje part för att emulera vissa enheter , till exempel utvecklingsmaskinvara som ännu inte har släppts.

Direct3D-enheten som ett program skapar måste motsvara funktionerna i den maskinvara som programmet körs på. Direct3D tillhandahåller återgivningsfunktioner, antingen genom att komma åt 3D-maskinvara som är installerad på datorn eller genom att emulera funktionerna i 3D-maskinvara i programvara. Därför tillhandahåller Direct3D enheter för både maskinvaruåtkomst och programvaruemulering.

Maskinvaruaccelererade enheter ger mycket bättre prestanda än programvaruenheter. Hal-enhetstypen är tillgänglig på alla Direct3D-grafiska kort som stöds. I de flesta fall riktar sig program mot datorer som har maskinvaruacceleration och förlitar sig på programvaruemulering för att hantera datorer med lägre slutpunkt.

Med undantag för referensenheten stöder programvaruenheter inte alltid samma funktioner som en maskinvaruenhet. Program bör alltid fråga efter enhetsfunktioner för att avgöra vilka funktioner som stöds.

Eftersom beteendet för programvaran och referensenheterna som tillhandahålls med Direct3D 9 är identiskt med hal-enhetens, fungerar programkod som har skapats för att fungera med hal-enheten med programvaran eller referensenheterna utan ändringar. Observera att även om det angivna beteendet för programvara eller referensenheter är identiskt med hal-enhetens, varierar enhetsfunktionerna och en viss programvaruenhet kan implementera en mycket mindre uppsättning funktioner.

Beteenden

Med Direct3D kan du ange beteendet för en enhet och enhetens typ. Metoden IDirect3D9::CreateDevice möjliggör en kombination av en eller flera beteendeflaggor för att styra direct3D-enhetens globala beteende. Dessa beteenden anger vad som är och inte underhålls i körningsdelen av Direct3D, och enhetstyperna anger vilken drivrutin som ska användas. Även om vissa kombinationer av enhetsbeteenden inte är giltiga är det möjligt att använda alla enhetsbeteenden med alla enhetstyper. Det är till exempel giltigt att ange D3DDEVTYPE_SW på en enhet som skapats med D3DCREATE_PUREDEVICE.

Komma igång