Dela via


Prestandaöverväganden (Direct3D 10)

Använda effektpooler

Det är vanligt att återgivningspipelines använder många skuggningar för att återge olika objekttyper och specialeffekter. Skuggningen är en blandning av tillstånd som är vanliga bland alla skuggningar, till exempel en världsmatris eller en ljus position, och andra tillstånd som är specifika för varje skuggning, till exempel ett objekts diffusa färg eller spektulär markeringsberäkning. En effektpool är en plats i minnet för att lagra tillstånd som används i många skuggningar, samt vanliga enhetsobjekt som skuggningsobjekt, återgivningstillståndsobjekt och konstanta buffertar. Prestandaförbättringen beror på att det gemensamma tillståndet uppdateras en gång för alla skuggningar som behöver det tillståndet.

En effektpool är en delad minnesplats för effekttillstånd. En pool skapas på samma sätt som en effekt. det kan skapas från minnet (eller en fil eller en resurs). Detta leder till två olika typer av effekter: en global effekt som inte är beroende av tillstånd i annan effekt jämfört med en underordnad effekt som är beroende av tillstånd i en annan effekt.

Du anger om en effekt är en global effekt (standardfallet) eller en underordnad effekt (genom att ange flaggan D3D10_EFFECT_COMPILE_CHILD_EFFECT) när effekten skapas. En global effekt kan fungera som en effektpool. en underordnad effekt kan inte vara en effektpool.

Återge en effekt

effekter (Direct3D 10)