Monochrome Light Maps (Direct3D 9)
Некоторые старые платы ускорения трехмерной графики не поддерживают наложение текстуры с помощью альфа-значения пикселя назначения. Дополнительные сведения см. в разделе Наложение альфа-текстур (Direct3D 9). Эти адаптеры также обычно не поддерживают множественное наложение текстуры. Если ваше приложение работает на подобном адаптере, оно может использовать многопроходное наложение текстуры для сопоставления монохромного освещения.
Для сопоставления монохромного освещения приложение сохраняет сведения об освещении в данных альфа-канала его текстур карты освещения. Приложение использует возможности Direct3D по фильтрации текстур для сопоставления каждого пикселя в изображении примитива соответствующему текселю на карте освещения. Это устанавливает коэффициент наложения источника равным альфа-значению соответствующего текселя.
В следующем примере показано, как приложение может использовать текстуру в качестве монохромной карты света:
// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface and that lptexLightMap is a valid
// pointer to a texture that contains monochrome light map data.
// Set the light map texture as the current texture.
d3dDevice->SetTexture(0, lptexLightMap);
// Set the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
// Set argument 1 to the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,
D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE);
Так как видеоадаптеры, которые не поддерживают альфа-наложение назначения, обычно не поддерживают наложение нескольких текстур, в этом примере карта света устанавливается в качестве первой текстуры, доступной на всех картах 3D-ускорителей. Пример кода задает операцию цвета для этапа смешивания текстуры, чтобы смешать данные текстуры с существующим цветом примитива. Затем в качестве входных данных выбирается первая текстура и существующий цвет примитива.
Связанные темы