Delen via


Opgegeven stencilreferentiewaarde (Direct3D 11 Graphics)

Door pixel-shaders in te schakelen om de stencilverwijzingswaarde uit te voeren, in plaats van de API-opgegeven waarde te gebruiken, is een zeer nauwkeurige controle over stencilbewerkingen mogelijk.

De opgegeven arceringswaarde vervangt de api-opgegeven Stencilverwijzingswaarde voor die aanroep. Dit betekent dat de wijziging van invloed is op zowel de stenciltest als wanneer het stencil op D3D11_STENCIL_OP_REPLACE (één lid van D3D11_STENCIL_OP) wordt gebruikt om de verwijzingswaarde naar de stencilbuffer te schrijven.

In eerdere versies van D3D11 kan de stencilreferentiewaarde alleen worden opgegeven door de methode ID3D11DeviceContext::OMSetDepthStencilState. Dit betekent dat deze waarde alleen kan worden gedefinieerd op een granulariteit per teken. Met deze D3D11.3-functie kunnen ontwikkelaars de stencilverwijzingswaarde (SV_StencilRef) lezen en gebruiken die uitvoer is van een pixel-shader, wat betekent dat deze kan worden opgegeven op een granulariteit per pixel of per voorbeeld.

Deze functie is optioneel in D3D11.3. Als u wilt testen op de ondersteuning, controleert u het PSSpecifiedStencilRefSupported booleaanse veld van D3D11_FEATURE_DATA_D3D11_OPTIONS2 met behulp van ID3D11Device::CheckFeatureSupport

Hier volgt een voorbeeld van het gebruik van SV_StencilRef in een pixel-shader:

uint main2(float4 c : COORD) : SV_StencilRef
{
    return uint(c.x);
}

Direct3D 11.3-functies

Shader Model 5.1