Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een DirectX-effect is een verzameling pijplijnstatussen die zijn ingesteld door expressies die zijn geschreven in HLSL- en een aantal syntaxis die specifiek is voor het effectframework.
Nadat u een effect hebt gemaakt, gebruikt u de API's van het effectframework om weer te geven. Effectfunctionaliteit kan variëren van iets eenvoudigs als een hoekpunt-shader die geometrie transformeert en een pixel-shader die een effen kleur uitvoert, tot een renderingtechniek waarvoor meerdere passen nodig zijn, elke fase van de grafische pijplijn gebruikt en de arceringsstatus bewerkt, evenals de pijplijnstatus die niet is gekoppeld aan de programmeerbare shaders.
De eerste stap is het ordenen van de status die u wilt beheren in een effect. Dit omvat shaderstatus (hoekpunt, romp, domein, geometrie, pixel- en rekentinten), textuur- en samplerstatus die wordt gebruikt door de shaders en andere niet-programmeerbare pijplijnstatus. U kunt een effect in het geheugen maken als een tekenreeks, maar meestal wordt de grootte groot genoeg dat het handig is om de status van het effect op te slaan in een effectbestand (een tekstbestand dat eindigt op een .fx-extensie). Als u een effect wilt gebruiken, moet u het compileren (om de HLSL-syntaxis en de syntaxis van het effectframework te controleren), de effectstatus initialiseren via API-aanroepen en de renderlus wijzigen om de rendering-API's aan te roepen.
Een effect omvat alle renderstatussen die vereist zijn voor een bepaald effect in één renderingfunctie die een techniek wordt genoemd. Een wachtwoord is een subset van een techniek die de status render bevat. Als u een meerdere pass rendering-effect wilt implementeren, implementeert u een of meer geslaagde uitvoeringen binnen een techniek. Stel dat u geometrie met één set diepte-/stencilbuffers wilt weergeven en vervolgens enkele sprites wilt tekenen. U kunt de geometrieweergave in de eerste pas implementeren en de spritetekening in de tweede pas. Als u het effect wilt weergeven, geeft u gewoon beide pass-in uw renderlus weer. U kunt een willekeurig aantal technieken in een effect implementeren. Natuurlijk, hoe groter het aantal technieken, hoe groter de compilatietijd voor het effect. Een manier om deze functionaliteit te benutten, is door effecten te creëren met technieken die zijn ontworpen om op verschillende hardware te worden uitgevoerd. Hierdoor kan een toepassing de prestaties probleemloos downgraden op basis van de gedetecteerde hardwaremogelijkheden.
Een set technieken kan worden gegroepeerd in een groep (die gebruikmaakt van de syntaxis 'fxgroup'). Technieken kunnen op elke manier worden gegroepeerd. Er kunnen bijvoorbeeld meerdere groepen worden gemaakt, één per materiaal; elk materiaal kan een techniek hebben voor elk hardwareniveau; elke techniek zou een set passen hebben die het materiaal op de specifieke hardware definieert.
In deze sectie
| Onderwerp | Beschrijving |
|---|---|
|
Status ordenen in een effect- |
Met Direct3D 11 wordt de effectstatus voor bepaalde pijplijnfasen geordend op basis van structuren. |
|
effectsysteeminterfaces |
Het effectsysteem definieert verschillende interfaces voor het beheren van de effectstatus. |
|
Gespecialiseerde interfaces |
ID3DX11EffectVariable heeft een aantal methoden voor het gieten van de interface in het specifieke type interface dat u nodig hebt. |
|
interfaces en klassen in effecten |
Er zijn veel manieren om klassen en interfaces te gebruiken in Effecten 11. |
|
Een effect weergeven |
Een effect kan worden gebruikt om informatie op te slaan of om weer te geven met behulp van een groep statussen. |
|
een effect klonen |
Als u een effect kloont, wordt er een tweede, bijna identieke kopie van het effect gemaakt. |
|
stream-outsyntaxis |
Een geometrie-shader met uitstroom wordt gedeclareerd met een bepaalde syntaxis. |
|
verschillen tussen effecten 10 en effecten 11 |
In dit onderwerp worden de verschillen tussen effecten 10 en effecten 11 weergegeven. |