Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения C++ могут использовать альфа-тестирование для управления записью пикселей на целевую поверхность отрисовки. С помощью состояния отрисовки D3DRS_ALPHATESTENABLE ваше приложение настраивает текущее устройство Direct3D для тестирования каждого пикселя в соответствии с функцией альфа-теста. Если тест выполнен успешно, пиксель записывается на поверхность. Если это не так, Direct3D игнорирует пиксель. Выберите функцию альфа-теста с состоянием D3DRS_ALPHAFUNC рендеринга. Приложение может задать эталонное альфа-значение для всех пикселей, чтобы осуществлять сравнение, с помощью состояния рендеринга D3DRS_ALPHAREF.
Наиболее распространенное использование альфа-тестирования заключается в повышении производительности при растеризации объектов, которые почти прозрачны. Если растровые данные цвета более непрозрачны, чем цвет на заданном пикселе (D3DPCMPCAPS_GREATEREQUAL), то пиксель записывается. В противном случае растризатор игнорирует пиксель полностью, сохраняя обработку, необходимую для смешивания двух цветов. В следующем примере кода проверяется, поддерживается ли данная функция сравнения и, если да, она задает параметры функции сравнения, необходимые для повышения производительности во время отрисовки.
// 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.
Не все оборудование поддерживает все функции альфа-тестирования. Вы можете проверить возможности устройства, вызвав метод IDirect3D9::GetDeviceCaps. После определения возможностей устройства проверьте член AlphaCmpCaps в связанной структуре D3DCAPS9 для требуемой функции сравнения. Если элемент AlphaCmpCaps содержит только возможность D3DPCMPCAPS_ALWAYS или только возможность D3DPCMPCAPS_NEVER, драйвер не поддерживает альфа-тесты.
Связанные разделы