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.
C++-toepassingen kunnen alfatests gebruiken om te bepalen wanneer pixels naar het render-doeloppervlak worden geschreven. Door de D3DRS_ALPHATESTENABLE renderstatus te gebruiken, stelt uw toepassing het huidige Direct3D-apparaat in, zodat elke pixel wordt getest op basis van een alfatestfunctie. Als de test slaagt, wordt de pixel op het oppervlak geplaatst. Als dit niet het geval is, negeert Direct3D de pixel. Selecteer de alfatestfunctie met de renderstatus D3DRS_ALPHAFUNC. Uw toepassing kan een referentie alfawaarde instellen voor alle pixels die u wilt vergelijken met behulp van de D3DRS_ALPHAREF weergavestatus.
Het meest voorkomende gebruik voor alfatests is het verbeteren van de prestaties bij het rasteren van objecten die bijna transparant zijn. Als de kleurgegevens die worden gerasterd meer ondoorzichtig zijn dan de kleur op een bepaalde pixel (D3DPCMPCAPS_GREATEREQUAL), wordt de pixel geschreven. Anders negeert de rasterizer de pixel volledig, waardoor de verwerking die nodig is om de twee kleuren te mengen, wordt bespaard. In het volgende codevoorbeeld wordt gecontroleerd of een bepaalde vergelijkingsfunctie wordt ondersteund. Als dat het argument is, worden de parameters voor de vergelijkingsfunctie ingesteld die nodig zijn om de prestaties tijdens rendering te verbeteren.
// This code example assumes that pCaps is a
// D3DCAPS9 structure that was filled with a
// previous call to IDirect3D9::GetDeviceCaps.
if (pCaps.AlphaCmpCaps & D3DPCMPCAPS_GREATEREQUAL)
{
dev->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
dev->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
dev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
}
// If the comparison is not supported, render anyway.
// The only drawback is no performance gain.
Niet alle hardware ondersteunt alle alfatestfuncties. U kunt de apparaatmogelijkheden controleren door de methode IDirect3D9::GetDeviceCaps aan te roepen. Nadat u de mogelijkheden van het apparaat hebt opgehaald, controleert u het AlphaCmpCaps-lid van de bijbehorende D3DCAPS9-structuur voor de gewenste vergelijkingsfunctie. Als het alphaCmpCaps-lid alleen de D3DPCMPCAPS_ALWAYS-mogelijkheid of alleen de D3DPCMPCAPS_NEVER-mogelijkheid bevat, biedt het stuurprogramma geen ondersteuning voor alfatests.
Verwante onderwerpen