Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I Direct3D 10 grupperas enhetstillståndet i tillståndsobjekt, vilket avsevärt minskar kostnaden för tillståndsändringar. Det finns flera tillståndsobjekt och var och en är utformad för att initiera en uppsättning tillstånd för en viss pipelinefas. Du kan skapa upp till 4 096 av varje typ av tillståndsobjekt.
- Input-Layout tillstånd
- Rastreringstillstånd
- Depth-Stencil tillstånd
- blandningstillstånd
- Sampler State
- prestandaöverväganden
- Relaterade ämnen
Input-Layout tillstånd
Den här gruppen av tillstånd (se D3D10_INPUT_ELEMENT_DESC) avgör hur indata-assembler-fasen läser data från indatabuffertar och monterar dem för användning av hörnskuggningen. Detta inkluderar tillstånd, till exempel antalet element i indatabufferten och signaturen för indata. Indata-assembler-fasen är en ny fas i pipelinen vars jobb är att strömma primitiver från minnet till pipelinen.
Information om hur du skapar ett objekt för indatalayouttillstånd finns i CreateInputLayout.
Rastreringstillstånd
Den här gruppen av tillstånd (se D3D10_RASTERIZER_DESC) initierar rastreringssteget. Det här objektet innehåller tillstånd som fyllnings- eller skyddslägen, aktivering av en saxrektangel för urklipp och inställning av multisampleparametrar. Det här steget rastrerar primitiver till pixlar och utför åtgärder som urklipp och mappning av primitiver till visningsporten.
Information om hur du skapar ett rastrizer-state-objekt finns i CreateRasterizerState.
Depth-Stencil tillstånd
Den här gruppen av tillstånd (se D3D10_DEPTH_STENCIL_DESC) initierar djupstencildelen i utdatasammanslagningssteg. Mer specifikt initierar det här objektet djup- och stenciltestning.
Information om hur du skapar ett djupstenciltillståndsobjekt finns i CreateDepthStencilState.
Blandningstillstånd
Den här gruppen av tillstånd (se D3D10_BLEND_DESC) initierar blandningsdelen av utdatasammanslagningssteg.
Information om hur du skapar ett blend-state-objekt finns i CreateBlendState.
Exempeltillstånd
Den här gruppen av tillstånd (se D3D10_SAMPLER_DESC) initierar ett sampler-objekt. Ett exempelobjekt används av skuggningsstegen för att filtrera texturer i minnet.
Skillnader mellan Direct3D 9 och Direct3D 10:
- I Direct3D 10 är sampler-objektet inte längre bundet till en specifik struktur. Det beskriver bara hur man filtrerar med tanke på någon bifogad resurs.
Information om hur du skapar ett sampler-state-objekt finns i CreateSamplerState.
Prestandaöverväganden
Att utforma API:et för att använda tillståndsobjekt skapar flera prestandafördelar. Dessa omfattar validering av tillstånd vid skapande av objekt, aktivering av cachelagring av tillståndsobjekt i maskinvara och avsevärt minska mängden tillstånd som skickas under ett tillståndsinställnings-API-anrop (genom att skicka en referens till tillståndsobjektet i stället för tillståndet).
För att uppnå dessa prestandaförbättringar bör du skapa tillståndsobjekten när programmet startas, långt före återgivningsloopen. Tillståndsobjekt är oföränderliga, det vill säga när de har skapats kan du inte ändra dem. I stället måste du förstöra och återskapa dem. För att hantera den här begränsningen kan du skapa upp till 4 096 av varje typ av tillståndsobjekt. Du kan till exempel skapa flera exempelobjekt med olika kombinationer av sampler-state. Om du ändrar sampler-tillståndet utförs sedan genom att anropa lämpligt Set API som skickar ett handtag till objektet (i motsats till sampler-tillståndet). Detta minskar avsevärt mängden omkostnader under varje återgivningsram för att ändra tillstånd eftersom antalet anrop och mängden data minskar avsevärt.
Du kan också välja att använda effektsystemet som automatiskt hanterar effektivt skapande och destruktion av tillståndsobjekt för ditt program.
Relaterade ämnen