Compartir a través de


Estado de prueba alfa (Direct3D 9)

Las aplicaciones de C++ pueden usar pruebas alfa para controlar cuándo se escriben píxeles en la superficie de destino de representación. Mediante el uso del estado de representación D3DRS_ALPHATESTENABLE , la aplicación establece el dispositivo Direct3D actual para que pruebe cada píxel según una función de prueba alfa. Si la prueba se realiza correctamente, el píxel se escribe en la superficie. Si no es así, Direct3D omite el píxel. Seleccione la función de prueba alfa con el estado de representación D3DRS_ALPHAFUNC . La aplicación puede establecer un valor alfa de referencia para que todos los píxeles se comparen mediante el estado de representación D3DRS_ALPHAREF .

El uso más común para las pruebas alfa es mejorar el rendimiento al rasterizar objetos que son casi transparentes. Si los datos de color que se rasterizan son más opacos que el color de un píxel determinado (D3DPCMPCAPS_GREATEREQUAL), se escribe el píxel. De lo contrario, el rasterizador omite el píxel por completo, guardando el procesamiento necesario para combinar los dos colores. En el ejemplo de código siguiente se comprueba si se admite una función de comparación determinada y, si es así, establece los parámetros de la función de comparación necesarios para mejorar el rendimiento durante la representación.

// 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.

No todos los hardware admiten todas las características de pruebas alfa. Puede comprobar las funcionalidades del dispositivo llamando al método IDirect3D9::GetDeviceCaps . Después de recuperar las funcionalidades del dispositivo, compruebe el miembro AlphaCmpCaps de la estructura D3DCAPS9 asociado para la función de comparación deseada. Si el miembro AlphaCmpCaps solo contiene la funcionalidad D3DPCMPCAPS_ALWAYS o solo la funcionalidad D3DPCMPCAPS_NEVER, el controlador no admite pruebas alfa.

Estados de representación