Textuuradresseringsmodi (Direct3D 9)
Uw Direct3D-toepassing kan patrooncoördinaten toewijzen aan elk hoekpunt van elke primitieve. Voor meer informatie, zie Textuurcoördinaten (Direct3D 9). Normaal gesproken bevinden de u- en v-texture-coördinaten die u aan een hoekpunt toewijst, zich in het bereik van 0,0 tot 1,0. Door textuurcoördinaten buiten dat bereik toe te wijzen, kunt u echter speciale textuureffecten creëren.
U bepaalt wat Direct3D doet met patrooncoördinaten die buiten het bereik [0.0, 1.0] vallen door de patroonadresseringsmodus in te stellen. U kunt uw toepassing bijvoorbeeld de textuuradresseringsmodus laten instellen, zodat een textuur over een primitief wordt getegeld.
Met Direct3D kunnen toepassingen texture wrapping uitvoeren. Het is belangrijk om te weten dat het instellen van de textuuradresseringsmodus op D3DTADDRESS_WRAP niet hetzelfde is als het uitvoeren van textuurwrapping. Als u de textuuradresseringsmodus instelt op D3DTADDRESS_WRAP, resulteert dit in meerdere kopieën van de brontextuur die worden toegepast op het huidige primitief, en het inschakelen van textuurherhaling verandert hoe het systeem getextureerde veelhoeken rastert. Zie Texture Wrapping (Direct3D 9)voor meer informatie.
Het inschakelen van textuurherhaling maakt textuurcoördinaten buiten het bereik [0.0, 1.0] ongeldig en het gedrag voor het rasteriseren van dergelijke textuurcoördinaten is in dit geval niet gedefinieerd. Wanneer textuurwrapping is ingeschakeld, worden de textuuradresseringsmodi niet gebruikt. Zorg ervoor dat uw toepassing geen textuurcoördinaten opgeeft die lager zijn dan 0,0 of hoger dan 1,0 wanneer textuurherhaling is ingeschakeld.
De adresseringsmodus instellen
U kunt patroonadresseringsmodi instellen voor afzonderlijke patroonfasen door de methode IDirect3DDevice9::SetSamplerState aan te roepen. Geef de gewenste patroonfase-id op in de parameter Sampler. Stel de Type parameter in op de waarden D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV of D3DSAMP_ADDRESSW om de u-, v- of w-adresseringsmodi afzonderlijk bij te werken. De parameter Waarde bepaalt welke modus wordt ingesteld. Dit kan elk lid zijn van het D3DTEXTUREADDRESS enumeratietype. Als u de huidige textuuradresmodus voor een textuurstadium wilt ophalen, roept u IDirect3DDevice9::GetSamplerStateaan met behulp van de D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV of D3DSAMP_ADDRESSW leden van de opsomming D3DSAMPLERSTATETYPE om de adresmodus te identificeren waarover u informatie wilt.
Apparaatbeperkingen
Hoewel het systeem in het algemeen textuurcoördinaten toestaat buiten het bereik van 0,0 en 1,0, inclusief, zijn hardwarebeperkingen vaak van invloed op hoe ver buiten dat bereik textuurcoördinaten kunnen zijn. Een renderingapparaat communiceert deze limiet in de MaxTextureRepeat lid van de D3DCAPS9 structuur wanneer u apparaatmogelijkheden ophaalt. De waarde in dit lid beschrijft het volledige bereik van patrooncoördinaten die door het apparaat zijn toegestaan. Als deze waarde bijvoorbeeld 128 is, moeten de coördinaten van het invoerpatroon in het bereik -128,0 tot +128,0 worden bewaard. Het doorgeven van hoekpunten met patrooncoördinaten buiten dit bereik is ongeldig. Dezelfde beperking geldt voor de textuurcoördinaten die worden gegenereerd als gevolg van het automatisch genereren van textuurcoördinaten en textuurcoördinaattransformaties.
De interpretatie van MaxTextureRepeat- wordt ook beïnvloed door de D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE mogelijkheidsbit. Wanneer deze bit is ingesteld, wordt de waarde in de MaxTextureRepeat lid nauwkeurig gebruikt zoals beschreven. Wanneer D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE echter niet is ingesteld, hangen beperkingen op het herhalen van texturen af van de grootte van de textuur die door de textuurcoördinaten wordt geïndexeerd. In dit geval moet MaxTextureRepeat worden geschaald met de huidige grootte van de textuur op het hoogste detailniveau om het geldige textuurcoördinaatbereik te berekenen. Als u bijvoorbeeld een patroondimensie van 32 en MaxTextureRepeat van 512 hebt, is het werkelijke geldige bereik van het patrooncoördinaat 512/32 = 16, dus de patrooncoördinaten voor dit apparaat moeten binnen het bereik van -16,0 tot +16,0 liggen.
Aanvullende informatie over de patroonadresseringsmodi vindt u in de volgende onderwerpen.
- Texture Address Mode (Direct3D 9) verpakken
- adresmodus voor spiegelpatroon (Direct3D 9)
- Clamp-textuur-adresmodus (Direct3D 9)
- randkleurpatroonadresmodus (Direct3D 9)
Verwante onderwerpen