Поделиться через


Перечисление D3DTEXTUREOP

Определяет операции смешения текстур для каждого этапа.

Синтаксис

typedef enum D3DTEXTUREOP { 
  D3DTOP_DISABLE                    = 1,
  D3DTOP_SELECTARG1                 = 2,
  D3DTOP_SELECTARG2                 = 3,
  D3DTOP_MODULATE                   = 4,
  D3DTOP_MODULATE2X                 = 5,
  D3DTOP_MODULATE4X                 = 6,
  D3DTOP_ADD                        = 7,
  D3DTOP_ADDSIGNED                  = 8,
  D3DTOP_ADDSIGNED2X                = 9,
  D3DTOP_SUBTRACT                   = 10,
  D3DTOP_ADDSMOOTH                  = 11,
  D3DTOP_BLENDDIFFUSEALPHA          = 12,
  D3DTOP_BLENDTEXTUREALPHA          = 13,
  D3DTOP_BLENDFACTORALPHA           = 14,
  D3DTOP_BLENDTEXTUREALPHAPM        = 15,
  D3DTOP_BLENDCURRENTALPHA          = 16,
  D3DTOP_PREMODULATE                = 17,
  D3DTOP_MODULATEALPHA_ADDCOLOR     = 18,
  D3DTOP_MODULATECOLOR_ADDALPHA     = 19,
  D3DTOP_MODULATEINVALPHA_ADDCOLOR  = 20,
  D3DTOP_MODULATEINVCOLOR_ADDALPHA  = 21,
  D3DTOP_BUMPENVMAP                 = 22,
  D3DTOP_BUMPENVMAPLUMINANCE        = 23,
  D3DTOP_DOTPRODUCT3                = 24,
  D3DTOP_MULTIPLYADD                = 25,
  D3DTOP_LERP                       = 26,
  D3DTOP_FORCE_DWORD                = 0x7fffffff
} D3DTEXTUREOP, *LPD3DTEXTUREOP;

Константы

D3DTOP_DISABLE

Отключает выходные данные из этого этапа текстуры и всех этапов с более высоким индексом. Чтобы отключить сопоставление текстур, задайте его в качестве операции цвета для первого этапа текстуры (этап 0). Альфа-операции нельзя отключить, если включены цветовые операции. Задание альфа-операции D3DTOP_DISABLE при включенном наложении цвета приводит к неопределенному поведению.

D3DTOP_SELECTARG1

Используйте первый цвет или альфа-аргумент этого этапа текстуры без изменений в качестве выходных данных. Эта операция влияет на аргумент цвета при использовании с состоянием этапа текстуры D3DTSS_COLOROP и альфа-аргумент при использовании с D3DTSS_ALPHAOP.

уравнение этого аргумента (s(rgba) = arg1)

D3DTOP_SELECTARG2

Используйте второй цвет или альфа-аргумент этого этапа текстуры без изменений в качестве выходных данных. Эта операция влияет на аргумент цвета при использовании с состоянием этапа текстуры D3DTSS_COLOROP и альфа-аргумент при использовании с D3DTSS_ALPHAOP.

уравнение этого аргумента (s(rgba) = arg2)

D3DTOP_MODULATE

Умножьте компоненты аргументов.

уравнение операции модуляции (s(rgba) = arg1 x arg 2)

D3DTOP_MODULATE2X

Умножьте компоненты аргументов и сместите продукты влево на 1 бит (эффективно умножая их на 2) для осветления.

уравнение операции модуляции 2x (s(rgba) = (arg1 x arg 2), а затем сдвиг влево 1)

D3DTOP_MODULATE4X

Умножьте компоненты аргументов и сместите продукты влево на 2 бита (эффективно умножая их на 4) для осветления.

уравнение операции модуляции4x (s(rgba) = (arg1 x arg 2), а затем сдвиг влево 2)

D3DTOP_ADD

Добавьте компоненты аргументов.

уравнение операции добавления (s(rgba) = arg1 + arg 2)

D3DTOP_ADDSIGNED

Добавьте компоненты аргументов с смещением от до 0,5, что делает эффективным диапазон значений от – 0,5 до 0,5.

уравнение операции добавления со знаком (s(rgba) = arg1 + arg 2 – 0,5)

D3DTOP_ADDSIGNED2X

Добавьте компоненты аргументов с смещением до 0,5 и переместите продукты влево на 1 бит.

уравнение операции добавления со знаком 2x ((s(rgba) = arg1 + arg 2 - 0,5), а затем сдвиг влево 1)

D3DTOP_SUBTRACT

Вычитает компоненты второго аргумента из компонентов первого аргумента.

уравнение операции вычитания (s(rgba) = arg1 - arg 2)

D3DTOP_ADDSMOOTH

Добавьте первый и второй аргументы; затем вычесть их произведение из суммы.

уравнение операции добавления smooth (s(rgba) = arg1 + arg 2 x (1 - arg1))

D3DTOP_BLENDDIFFUSEALPHA

Линейно смешайте этот этап текстуры, используя интерполированный альфа из каждой вершины.

уравнение диффузной альфа-операции смешения (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDTEXTUREALPHA

Линейное смешивание этого этапа текстуры с помощью альфа из текстуры этого этапа.

уравнение альфа-операции текстуры смешения (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDFACTORALPHA

Линейно смешайте этот этап текстуры, используя скалярный альфа-набор с состоянием D3DRS_TEXTUREFACTOR отрисовки.

уравнение альфа-операции коэффициента смешения (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDTEXTUREALPHAPM

Линейное смешивание этапа текстуры, использующего предварительно добавленный альфа-канал.

уравнение операции альфа pm текстуры смешения (s(rgba) = arg1 + arg 2 x (1 - alpha))

D3DTOP_BLENDCURRENTALPHA

Линейное смешивание этого этапа текстуры с помощью альфа,взятого из предыдущего этапа текстуры.

уравнение текущей альфа-операции смешения (s(rgba) = arg1 x alpha + arg2 x (1 - alpha))

D3DTOP_PREMODULATE

D3DTOP_PREMODULATE устанавливается в стадии n. Выходные данные этапа n — arg1. Кроме того, если текстура находится на этапе n + 1, любая D3DTA_CURRENT на стадии n + 1 предварительно смыкается текстурой на этапе n + 1.

D3DTOP_MODULATEALPHA_ADDCOLOR

Модулируйте цвет второго аргумента с помощью альфа первого аргумента; затем добавьте результат в аргумент 1. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

уравнение альфа-операции добавления цветовой модуляции (s(rgba) = arg1(rgb) + arg1(a) x arg2(rgb))

D3DTOP_MODULATECOLOR_ADDALPHA

Модулируйте аргументы; затем добавьте альфа первого аргумента. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

уравнение операции добавления альфа-модуляции цвета (s(rgba) = arg1(rgb) x arg2(rgb) + arg1(a))

D3DTOP_MODULATEINVALPHA_ADDCOLOR

Аналогично D3DTOP_MODULATEALPHA_ADDCOLOR, но используйте обратный альфа первого аргумента. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

уравнение обратной альфа-операции модуляции цвета (s(rgba) = (1 - arg1(a)) x arg2(rgb) + arg1(rgb))

D3DTOP_MODULATEINVCOLOR_ADDALPHA

Аналогично D3DTOP_MODULATECOLOR_ADDALPHA, но используйте обратный цвет первого аргумента. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

уравнение операции добавления альфа-модуляции обратного цвета (s(rgba) = (1 - arg1(rgb)) x arg2(rgb) + arg1(a))

D3DTOP_BUMPENVMAP

Выполняйте сопоставление ударов по пикселям, используя карту среды на следующем этапе текстуры без яркости. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

D3DTOP_BUMPENVMAPLUMINANCE

Выполните сопоставление ударов по пикселям с помощью карты среды на следующем этапе текстуры с яркостью. Эта операция поддерживается только для цветовых операций (D3DTSS_COLOROP).

D3DTOP_DOTPRODUCT3

Модулируйте компоненты каждого аргумента как подписанные компоненты, добавьте их продукты; затем реплицируйте сумму во все цветовые каналы, включая альфа-каналы. Эта операция поддерживается для цветовых и альфа-операций.

уравнение операции точечных произведений 3 (s(rgba) = arg1(r) x arg2(r) + arg1(g) x arg2(g) + arg1(b) x arg2(b))

В DirectX 6 и DirectX 7 операции многотекстовой обработки, указанные выше входные данные, смещены наполовину (y = x – 0,5) перед использованием для имитации подписанных данных, а скалярный результат автоматически прижимается к положительным значениям и реплицируется во все три выходных канала. Кроме того, обратите внимание, что в качестве цветовой операции это не обновляет альфа-канал, а только обновляет компоненты RGB.

Однако в шейдерах DirectX 8.1 можно указать, что выходные данные направляются в компоненты RGB, .a или и то, и другое (по умолчанию). Можно также указать отдельную скалярную операцию в альфа-канале.

D3DTOP_MULTIPLYADD

Выполняет операцию умножения и накопления. Он принимает два последних аргумента, умножает их вместе и добавляет их к оставшимся входным/исходным аргументам и помещает их в результат.

SRGBA = Arg1 + Arg2 * Arg3

D3DTOP_LERP

Линейно интерполирует второй и третий исходные аргументы по пропорции, указанной в первом исходном аргументе.

SRGBA = (Arg1) * Arg2 + (1- Arg1) * Arg3.

D3DTOP_FORCE_DWORD

Принудительно компилирует это перечисление до 32 бит в размере. Без этого значения некоторые компиляторы разрешали бы компиляцию этого перечисления до размера, отличного от 32 бит. Это значение не используется.

Комментарии

Члены этого типа используются при задании цветовых или альфа-операций с помощью D3DTSS_COLOROP или D3DTSS_ALPHAOP значений с помощью метода IDirect3Ddevice9::SetTextureStageState .

В приведенных выше формулах SRGBA — это цвет RGBA, созданный операцией текстуры, а Arg1, Arg2 и Arg3 представляют полный цвет RGBA аргументов текстуры. Отдельные компоненты аргумента отображаются с подстроками. Например, альфа-компонент для аргумента 1 будет отображаться как Arg1A.

Требования

Требование Значение
Заголовок
D3D9Types.h

См. также раздел

Перечисления Direct3D

D3DTEXTURESTAGESTATETYPE