Перечисление D3DRENDERSTATETYPE (d3d9types.h)

В D3DRENDERSTATETYPE перечислимом типе перечислены различные атрибуты или состояния отрисовки. Перечислители D3DRENDERSTATETYPE, которые используются исключительно драйверами, могут указывать сведения о отрисовке или атрибут текстуры. Драйверы отображения используют следующие состояния отрисовки:

Синтаксис

typedef enum _D3DRENDERSTATETYPE {
  D3DRS_ZENABLE,
  D3DRS_FILLMODE,
  D3DRS_SHADEMODE,
  D3DRS_ZWRITEENABLE,
  D3DRS_ALPHATESTENABLE,
  D3DRS_LASTPIXEL,
  D3DRS_SRCBLEND,
  D3DRS_DESTBLEND,
  D3DRS_CULLMODE,
  D3DRS_ZFUNC,
  D3DRS_ALPHAREF,
  D3DRS_ALPHAFUNC,
  D3DRS_DITHERENABLE,
  D3DRS_ALPHABLENDENABLE,
  D3DRS_FOGENABLE,
  D3DRS_SPECULARENABLE,
  D3DRS_FOGCOLOR,
  D3DRS_FOGTABLEMODE,
  D3DRS_FOGSTART,
  D3DRS_FOGEND,
  D3DRS_FOGDENSITY,
  D3DRS_RANGEFOGENABLE,
  D3DRS_STENCILENABLE,
  D3DRS_STENCILFAIL,
  D3DRS_STENCILZFAIL,
  D3DRS_STENCILPASS,
  D3DRS_STENCILFUNC,
  D3DRS_STENCILREF,
  D3DRS_STENCILMASK,
  D3DRS_STENCILWRITEMASK,
  D3DRS_TEXTUREFACTOR,
  D3DRS_WRAP0,
  D3DRS_WRAP1,
  D3DRS_WRAP2,
  D3DRS_WRAP3,
  D3DRS_WRAP4,
  D3DRS_WRAP5,
  D3DRS_WRAP6,
  D3DRS_WRAP7,
  D3DRS_CLIPPING,
  D3DRS_LIGHTING,
  D3DRS_AMBIENT,
  D3DRS_FOGVERTEXMODE,
  D3DRS_COLORVERTEX,
  D3DRS_LOCALVIEWER,
  D3DRS_NORMALIZENORMALS,
  D3DRS_DIFFUSEMATERIALSOURCE,
  D3DRS_SPECULARMATERIALSOURCE,
  D3DRS_AMBIENTMATERIALSOURCE,
  D3DRS_EMISSIVEMATERIALSOURCE,
  D3DRS_VERTEXBLEND,
  D3DRS_CLIPPLANEENABLE,
  D3DRS_POINTSIZE,
  D3DRS_POINTSIZE_MIN,
  D3DRS_POINTSPRITEENABLE,
  D3DRS_POINTSCALEENABLE,
  D3DRS_POINTSCALE_A,
  D3DRS_POINTSCALE_B,
  D3DRS_POINTSCALE_C,
  D3DRS_MULTISAMPLEANTIALIAS,
  D3DRS_MULTISAMPLEMASK,
  D3DRS_PATCHEDGESTYLE,
  D3DRS_DEBUGMONITORTOKEN,
  D3DRS_POINTSIZE_MAX,
  D3DRS_INDEXEDVERTEXBLENDENABLE,
  D3DRS_COLORWRITEENABLE,
  D3DRS_TWEENFACTOR,
  D3DRS_BLENDOP,
  D3DRS_POSITIONDEGREE,
  D3DRS_NORMALDEGREE,
  D3DRS_SCISSORTESTENABLE,
  D3DRS_SLOPESCALEDEPTHBIAS,
  D3DRS_ANTIALIASEDLINEENABLE,
  D3DRS_MINTESSELLATIONLEVEL,
  D3DRS_MAXTESSELLATIONLEVEL,
  D3DRS_ADAPTIVETESS_X,
  D3DRS_ADAPTIVETESS_Y,
  D3DRS_ADAPTIVETESS_Z,
  D3DRS_ADAPTIVETESS_W,
  D3DRS_ENABLEADAPTIVETESSELLATION,
  D3DRS_TWOSIDEDSTENCILMODE,
  D3DRS_CCW_STENCILFAIL,
  D3DRS_CCW_STENCILZFAIL,
  D3DRS_CCW_STENCILPASS,
  D3DRS_CCW_STENCILFUNC,
  D3DRS_COLORWRITEENABLE1,
  D3DRS_COLORWRITEENABLE2,
  D3DRS_COLORWRITEENABLE3,
  D3DRS_BLENDFACTOR,
  D3DRS_SRGBWRITEENABLE,
  D3DRS_DEPTHBIAS,
  D3DRS_WRAP8,
  D3DRS_WRAP9,
  D3DRS_WRAP10,
  D3DRS_WRAP11,
  D3DRS_WRAP12,
  D3DRS_WRAP13,
  D3DRS_WRAP14,
  D3DRS_WRAP15,
  D3DRS_SEPARATEALPHABLENDENABLE,
  D3DRS_SRCBLENDALPHA,
  D3DRS_DESTBLENDALPHA,
  D3DRS_BLENDOPALPHA,
  D3DRS_FORCE_DWORD
} D3DRENDERSTATETYPE;

Константы

 
D3DRS_ZENABLE
Тип перечисления D3DZBUFFERTYPE , представляющий состояние буферизации глубины.
D3DRS_FILLMODE
Тип перечисления D3DFILLMODE .
D3DRS_SHADEMODE
Тип перечисления D3DSHADEMODE .
D3DRS_ZWRITEENABLE
Значение TRUE, чтобы разрешить приложению записывать данные в буфер глубины. Значение по умолчанию — TRUE. Этот элемент позволяет приложению предотвратить обновление буфера глубины системой новыми значениями глубины. Если значение РАВНО FALSE, сравнение глубины по-прежнему выполняется в соответствии с состоянием отрисовки D3DRS_ZFUNC, при условии, что выполняется буферизация глубины, но значения глубины не записываются в буфер.
D3DRS_ALPHATESTENABLE
Значение TRUE, чтобы включить альфа-тестирование для каждого пикселя. Если проверка пройдена, пиксель обрабатывается буфером кадров. В противном случае вся обработка буфера кадров пропускается для пикселя.
D3DRS_LASTPIXEL
Значение по умолчанию — TRUE, что позволяет рисовать последний пиксель в строке. Чтобы предотвратить рисование последнего пикселя, присвойте этому значению значение FALSE.
D3DRS_SRCBLEND
Тип перечисления D3DBLEND .
D3DRS_DESTBLEND
Тип перечисления D3DBLEND.
D3DRS_CULLMODE
Тип перечисления D3DCULL , указывающий способ отбраковки треугольников с обратной стороной, если вообще.
D3DRS_ZFUNC
Тип перечисления D3DCMPFUNC , который позволяет приложению принимать или отклонять пиксель в зависимости от расстояния от камеры.

Значение глубины пикселя сравнивается со значением буфера глубины. Если значение глубины пикселя передает функцию сравнения, пиксель записывается.

Значение глубины записывается в буфер глубины, только если состояние отрисовки — TRUE.
D3DRS_ALPHAREF
Значение , указывающее ссылочное альфа-значение, по которому проверяются пиксели при включенном альфа-тестировании. Это 8-разрядное значение, помещенное в низкие 8 битов значения состояния отрисовки DWORD. Значения могут варьироваться от 0x00000000 до 0x000000FF. Значение по умолчанию — 0.
D3DRS_ALPHAFUNC
Тип перечисления D3DCMPFUNC, позволяющий приложению принимать или отклонять пиксель на основе его альфа-значения.
D3DRS_DITHERENABLE
Значение TRUE, чтобы включить дитеринг. Значение по умолчанию — FALSE.
D3DRS_ALPHABLENDENABLE
Значение TRUE, чтобы включить прозрачность альфа-смешения. Значение по умолчанию — FALSE.

Тип альфа-смешения определяется состояниями D3DRS_SRCBLEND и D3DRS_DESTBLEND отрисовки.
D3DRS_FOGENABLE
Значение TRUE, чтобы включить смешивание тумана. Значение по умолчанию — FALSE.
D3DRS_SPECULARENABLE
Значение TRUE, чтобы включить зеркальное выделение. Значение по умолчанию — FALSE.
Зеркальные выделения вычисляются так, как будто каждая вершина в освещаемом объекте находится в источнике объекта. Это дает ожидаемые результаты, если объект моделируется вокруг источника, а расстояние от света до объекта относительно велико. В других случаях результаты как неопределенные.

Если для этого элемента задано значение TRUE, цвет отражения добавляется к базовому цвету после каскада текстуры, но перед альфа-смешения.
D3DRS_FOGCOLOR
Структура D3DCOLORVALUE .
D3DRS_FOGTABLEMODE
D3DFOGMODE перечислимый тип, представляющий формулу тумана, используемую для пиксельного тумана.
D3DRS_FOGSTART
Глубина, с которой начинаются эффекты тумана в пикселях или вершинах для режима линейного тумана. Значение по умолчанию — 0,0f. Глубина указывается в пространстве мира для тумана вершин и пространства устройства [0,0, 1,0] или в пространстве мира для пиксельного тумана. Для пиксельного тумана эти значения находятся в пространстве устройства, когда система использует z для вычислений тумана и мирового пространства, когда система использует туман относительно глаз (w-fog).
D3DRS_FOGEND
Глубина, на которой заканчиваются эффекты тумана в пикселях или вершинах для режима линейного тумана. Значение по умолчанию — 1,0f. Глубина указывается в пространстве мира для тумана вершин и пространства устройства [0,0, 1,0] или в пространстве мира для пиксельного тумана. Для пиксельного тумана эти значения находятся в пространстве устройства, когда система использует z для вычислений тумана, и в мировом пространстве, когда система использует туман относительно глаз (w-fog).
D3DRS_FOGDENSITY
Плотность тумана для пиксельного или вершинного тумана, используемая в режимах экспоненциального тумана (D3DFOG_EXP и D3DFOG_EXP2). Допустимые значения плотности варьируются от 0,0 до 1,0.
D3DRS_RANGEFOGENABLE
Значение TRUE, чтобы включить туман вершин на основе диапазона. Значение по умолчанию — FALSE. В этом случае система использует туман на основе глубины. В тумане на основе диапазона расстояние от объекта от средства просмотра используется для вычисления эффектов тумана, а не глубины объекта (т. е. z-координаты) в сцене. В тумане на основе диапазона все методы тумана работают как обычно, за исключением того, что они используют диапазон вместо глубины в вычислениях.

Диапазон является правильным фактором для вычислений тумана, но обычно используется глубина, так как диапазон занимает много времени для вычислений, а глубина уже доступна. Использование глубины для вычисления тумана имеет нежелательный эффект изменения запотечности периферийных объектов по мере движения глаза зрителя - в этом случае глубина меняется, а диапазон остается постоянным.

Так как в настоящее время оборудование не поддерживает туман на основе диапазона пикселей, коррекция диапазона предлагается только для тумана вершин.
D3DRS_STENCILENABLE
True, чтобы включить набор элементов, или FALSE, чтобы отключить набор элементов. Значение по умолчанию — FALSE.
D3DRS_STENCILFAIL
Тип перечисления D3DSTENCILOP , указывающий операцию набора элементов, выполняемую в случае сбоя теста набора элементов. Значение по умолчанию — D3DSTENCILOP_KEEP.
D3DRS_STENCILZFAIL
Тип перечисления D3DSTENCILOP, указывающий операцию набора элементов, выполняемую в случае успешного прохождения теста трафарета и сбоя проверки глубины (z-test).
D3DRS_STENCILPASS
Тип перечисления D3DSTENCILOP, указывающий операцию набора элементов, выполняемую при успешном прохождении тестов трафарета и глубины (z).
D3DRS_STENCILFUNC
Функция сравнения используется для сравнения ссылочного значения с записью буфера трафарета. Это сравнение применяется только к битам в ссылочного значения и записи буфера трафарета, заданным в маске трафарета (заданной D3DRS_STENCILMASK состоянии отрисовки). Если задано значение TRUE, проверка набора элементов будет пройдена.
D3DRS_STENCILREF
Значение ссылки int для теста набора элементов. Значение по умолчанию — 0.
D3DRS_STENCILMASK
Маска применяется к ссылочным значениям и каждой записи буфера трафарета, чтобы определить значимые биты для теста трафарета. Маска по умолчанию — 0xFFFFFFFF.
D3DRS_STENCILWRITEMASK
Маска записи применяется к значениям, записанным в буфер трафарета. Маска по умолчанию — 0xFFFFFFFF.
D3DRS_TEXTUREFACTOR
Цвет, используемый для наложения нескольких текстур с помощью аргумента D3DTA_TFACTOR текстуры или операции D3DTOP_BLENDFACTORALPHA наложения текстур.
D3DRS_WRAP0
Режим упаковки текстур для нескольких наборов координат текстуры. Допустимыми значениями для этого состояния отрисовки может быть любое сочетание D3DWRAPCOORD_0 (или D3DWRAP_U), D3DWRAPCOORD_1 (или D3DWRAP_V), D3DWRAPCOORD_2 (или D3DWRAP_W) и флагов D3DWRAPCOORD_3. Это приводит к тому, что система выполняет оболочку в направлении первого, второго, третьего и четвертого измерений, которые иногда называют направлениями s, t, r и q для данной текстуры. Значение по умолчанию для этого состояния отрисовки равно 0 (упаковка отключена во всех направлениях).
D3DRS_WRAP1
См. D3DRS_WRAP0.
D3DRS_WRAP2
См. D3DRS_WRAP0.
D3DRS_WRAP3
См. D3DRS_WRAP0.
D3DRS_WRAP4
См. D3DRS_WRAP0.
D3DRS_WRAP5
См. D3DRS_WRAP0.
D3DRS_WRAP6
См. D3DRS_WRAP0.
D3DRS_WRAP7
См. D3DRS_WRAP0.
D3DRS_CLIPPING
Значение TRUE, чтобы включить примитивную обрезку с помощью Direct3D, или FALSE, чтобы отключить ее. Значение по умолчанию — TRUE.
D3DRS_LIGHTING
True, чтобы включить освещение Direct3D, или FALSE, чтобы отключить его. Значение по умолчанию — TRUE. Правильно освещены только вершины, включающие нормальное состояние вершины; Вершины, которые не содержат нормального, используют точечное произведение 0 во всех вычислениях освещения.
D3DRS_AMBIENT
Цвет окружающего света.
D3DRS_FOGVERTEXMODE
Формула тумана, используемая для тумана вершин.
D3DRS_COLORVERTEX
Значение TRUE для включения цвета для каждой вершины или значение FALSE, чтобы отключить его. Значение по умолчанию — TRUE. Включение цвета для каждой вершины позволяет системе включать цвет, определенный для отдельных вершин, в свои вычисления освещения.
D3DRS_LOCALVIEWER
Значение TRUE для включения зеркальных выделений относительно камеры или значение FALSE для использования ортогональных зеркальных выделений. Значение по умолчанию — TRUE. Приложения, использующие ортогональную проекцию, должны указывать значение FALSE.
D3DRS_NORMALIZENORMALS
Значение TRUE, чтобы включить автоматическую нормализацию норм вершин, или ЗНАЧЕНИЕ FALSE, чтобы отключить ее. Значение по умолчанию — FALSE. Включение этой функции приводит к тому, что система нормализует нормали вершин для вершин после их преобразования в пространство камеры, что может занять много времени.
D3DRS_DIFFUSEMATERIALSOURCE
Диффузный источник цвета для вычислений освещения.
D3DRS_SPECULARMATERIALSOURCE
Источник зеркального цвета для вычислений освещения.
D3DRS_AMBIENTMATERIALSOURCE
Источник внешнего цвета для вычислений освещения.
D3DRS_EMISSIVEMATERIALSOURCE
Источник излучаемого цвета для вычислений освещения.
D3DRS_VERTEXBLEND
Количество матриц, используемых для выполнения смешивания геометрии, если таковые есть.
D3DRS_CLIPPLANEENABLE
Включает или отключает определяемые пользователем плоскости обрезки. Допустимыми значениями являются любые значения DWORD, в которых состояние каждого бита (задано или не задано) переключает состояние активации соответствующего определяемого пользователем уровня отсечения. Наименьший значимый бит (бит 0) управляет первой плоскостью обрезки по индексу 0, а последующие биты управляют активацией плоскостей обрезки по более высоким индексам. Если задан бит, система применяет соответствующую плоскость обрезки во время отрисовки сцены. Значение по умолчанию — 0.
D3DRS_POINTSIZE
Значение с плавающей точкой, указывающее размер, используемый для вычисления размера точек в случаях, когда размер точки не указан для каждой вершины. Это значение не используется, если вершина содержит размер точки. Это значение находится в единицах экранного пространства, если D3DRS_POINTSCALEENABLE имеет значение FALSE; В противном случае это значение находится в единицах мирового пространства. Значением по умолчанию является значение, возвращаемое драйвером. Если драйвер возвращает значение 0 или 1, значение по умолчанию — 64, что позволяет эмуляции размера программной точки.
D3DRS_POINTSIZE_MIN
Значение с плавающей точкой, указывающее минимальный размер точечного примитива. Примитивы точек прижаты к этому размеру во время отрисовки. Если для этого параметра задано значение меньше 1,0, то точки удаляются, если точка не охватывает центр пикселей и отключается или отображается с меньшей интенсивностью при включенном сглаживание. Значение по умолчанию — 1,0f. Диапазон для этого значения больше или равен 0,0f.
D3DRS_POINTSPRITEENABLE
При значении TRUE координаты текстур точечных примитивов задаются таким образом, чтобы полные текстуры сопоставлялись с каждой точкой. При значении FALSE координаты текстуры вершин используются для всей точки. Значение по умолчанию — FALSE. Вы можете достичь однопикселенных точек в стиле DirectX 7, задав для D3DRS_POINTSCALEENABLE значение FALSE, а D3DRS_POINTSIZE значение 1,0, которое является значениями по умолчанию.
D3DRS_POINTSCALEENABLE
Логическое значение, которое управляет вычислением размера для точечных примитивов. Если задано значение TRUE, размер точки интерпретируется как значение пространства камеры и масштабируется с помощью функции distance и frustum для масштабирования окна просмотра по оси Y для вычисления окончательного размера точки экранного пространства. При значении FALSE размер точки интерпретируется как пространство на экране и используется напрямую. Значение по умолчанию — FALSE.
D3DRS_POINTSCALE_A
Значение с плавающей точкой, которое управляет затуханием размера на основе расстояния для точечных примитивов. Активен, только если D3DRS_POINTSCALEENABLE имеет значение TRUE. Значение по умолчанию — 1,0f. Диапазон для этого значения больше или равен 0,0f.
D3DRS_POINTSCALE_B
Значение с плавающей точкой, которое управляет затуханием размера на основе расстояния для точечных примитивов. Активен, только если D3DRS_POINTSCALEENABLE имеет значение TRUE. Значение по умолчанию — 0,0f. Диапазон для этого значения больше или равен 0,0f.
D3DRS_POINTSCALE_C
Значение с плавающей точкой, которое управляет затуханием размера на основе расстояния для точечных примитивов. Активен, только если D3DRS_POINTSCALEENABLE имеет значение TRUE. Значение по умолчанию — 0,0f. Диапазон для этого значения больше или равен 0,0f.
D3DRS_MULTISAMPLEANTIALIAS
Значение типа bool, определяющее способ вычисления отдельных выборок при использовании буфера цели отрисовки с несколькими выборками. Если задано значение TRUE, то вычисляются несколько выборок, чтобы полная сглаживание сцены выполнялась выборкой в разных позициях выборки для каждой из нескольких выборок. Если задано значение FALSE, все примеры записываются с одинаковым значением выборки в центре пикселей, что позволяет не сглаживать отрисовку в буфере с несколькими выборками. Это состояние отрисовки не влияет на отрисовку в одном буфере выборки. Значение по умолчанию — TRUE.
D3DRS_MULTISAMPLEMASK
Каждый бит в этой маске, начиная с по крайней мере значительного бита (LSB), управляет изменением одного из примеров в целевом объекте многомерной отрисовки. Таким образом, для целевого объекта отрисовки из 8 примеров низкий байт содержит восемь средств записи для каждого из восьми выборок. Это состояние отрисовки не влияет на отрисовку в одном буфере выборки. Значение по умолчанию — 0xFFFFFFFF.

Это состояние отрисовки позволяет использовать буфер с несколькими выборками в качестве буфера накопления, выполняя многопроходную отрисовку геометрии, где каждый проход обновляет подмножество примеров.
Если имеется n примеров с поддержкой нескольких выборок и k, результирующая интенсивность отображаемого изображения должна быть k/n. Каждый компонент RGB каждого пикселя имеет коэффициент k/n.
D3DRS_PATCHEDGESTYLE
Задает, будут ли ребра исправления использовать тесселяции в стиле с плавающей запятой.
D3DRS_DEBUGMONITORTOKEN
Устанавливается только для отладки монитора.
D3DRS_POINTSIZE_MAX
Значение с плавающей точкой, указывающее максимальный размер, до которого будут закреплены спрайты. Значение должно быть меньше или равно члену MaxPointSize D3DCAPS9 и больше или равно D3DRS_POINTSIZE_MIN. Значение по умолчанию — 64,0.
D3DRS_INDEXEDVERTEXBLENDENABLE
Значение типа bool, которое включает или отключает смешивание индексированных вершин. Значение по умолчанию — FALSE. Если задано значение TRUE, включено смешивание индексированных вершин. Если задано значение FALSE, смешивание индексированных вершин отключается. Если это состояние отрисовки включено, пользователь должен передать матричные индексы в виде упакованного DWORD с каждой вершиной. Если состояние отрисовки отключено и смешивание вершин включено через состояние D3DRS_VERTEXBLEND, это эквивалентно тому, что в каждой вершине есть матричные индексы 0, 1, 2, 3.
D3DRS_COLORWRITEENABLE
Значение UINT, позволяющее выполнять запись по каналу для буфера цвета целевого объекта отрисовки. Набор битов приводит к обновлению цветового канала во время трехмерной отрисовки. Четкий бит приводит к тому, что цветовый канал не затрагивается.
D3DRS_TWEENFACTOR
Значение с плавающей точкой, которое управляет коэффициентом tween.
D3DRS_BLENDOP
Значение, используемое для выбора арифметической операции, применяемой, когда для состояния отрисовки альфа-смешивания D3DRS_ALPHABLENDENABLE задано значение TRUE.

Если возможность D3DPMISCCAPS_BLENDOP устройства не поддерживается, выполняется D3DBLENDOP_ADD.
D3DRS_POSITIONDEGREE
Степень интерполяции положения N-патч. Значения могут быть D3DDEGREE_CUBIC (по умолчанию) или D3DDEGREE_LINEAR.
D3DRS_NORMALDEGREE
N-патч нормальной степени интерполяции. Значения могут быть D3DDEGREE_LINEAR (по умолчанию) или D3DDEGREE_QUADRATIC.
D3DRS_SCISSORTESTENABLE
Значение TRUE для включения проверки ножниц и значение FALSE, чтобы отключить его. Значение по умолчанию — FALSE.
D3DRS_SLOPESCALEDEPTHBIAS
Используется для определения того, сколько смещения можно применить к копланарным примитивам, чтобы уменьшить Z-бой. Значение по умолчанию — 0.
D3DRS_ANTIALIASEDLINEENABLE
Значение TRUE для включения сглаживания строк, значение FALSE — для отключения сглаживания строк. Значение по умолчанию — FALSE.
D3DRS_MINTESSELLATIONLEVEL
Минимальный уровень тесселяции. Значение по умолчанию — 1,0f.
D3DRS_MAXTESSELLATIONLEVEL
Максимальный уровень тесселяции. Значение по умолчанию — 1,0f.
D3DRS_ADAPTIVETESS_X
Сумма адаптивного тесселлята в направлении x. Значение по умолчанию — 0,0f.
D3DRS_ADAPTIVETESS_Y
Сумма адаптивного тесселлата в направлении y. Значение по умолчанию — 0,0f.
D3DRS_ADAPTIVETESS_Z
Сумма адаптивного тесселлата в направлении z. Значение по умолчанию — 1,0f.
D3DRS_ADAPTIVETESS_W
Сумма адаптивного тесселлата в направлении w. Значение по умолчанию — 0,0f.
D3DRS_ENABLEADAPTIVETESSELLATION
Значение TRUE для включения адаптивной тесселяции, значение FALSE — для отключения.
D3DRS_TWOSIDEDSTENCILMODE
Значение TRUE включает двустороннее набор элементов, значение FALSE отключает его. Значение по умолчанию — FALSE. Приложение должно задать D3DRS_CULLMODE D3DCULL_NONE, чтобы включить двусторонний режим набора элементов. Если порядок обмотки треугольника по часовой стрелке, будут использоваться операции D3DRS_STENCIL*. Если порядок обмотки против часовой стрелки, будут использоваться операции D3DRS_CCW_STENCIL*.
D3DRS_CCW_STENCILFAIL
Операция набора элементов, выполняемая в случае сбоя теста набора элементов CCW.
D3DRS_CCW_STENCILZFAIL
Операция набора элементов, выполняемая в случае успешного прохождения теста набора элементов CCW и сбоя z-теста.
D3DRS_CCW_STENCILPASS
Операция набора элементов, выполняемая при успешном выполнении как набора элементов CCW, так и z-тестов.
D3DRS_CCW_STENCILFUNC
Функция сравнения. Проверка набора элементов CCW проходит, если (ссылка & mask) функция трафарета (набор элементов & маска)) имеет значение TRUE.
D3DRS_COLORWRITEENABLE1
Дополнительные значения ColorWriteEnable для устройств.
D3DRS_COLORWRITEENABLE2
Дополнительные значения ColorWriteEnable для устройств.
D3DRS_COLORWRITEENABLE3
Дополнительные значения ColorWriteEnable для устройств.
D3DRS_BLENDFACTOR
Константный коэффициент смешивания во время альфа-смешивания.
D3DRS_SRGBWRITEENABLE
Включите гамма-коррекцию операций записи в sRGB. Формат должен предоставлять D3DUSAGE_SRGBWRITE. Значение по умолчанию — 0.
D3DRS_DEPTHBIAS
Значение с плавающей запятой, используемое для сравнения значений глубины.
D3DRS_WRAP8
См. D3DRS_WRAP0.
D3DRS_WRAP9
См. D3DRS_WRAP0.
D3DRS_WRAP10
См. D3DRS_WRAP0.
D3DRS_WRAP11
См. D3DRS_WRAP0.
D3DRS_WRAP12
См. D3DRS_WRAP0.
D3DRS_WRAP13
См. D3DRS_WRAP0.
D3DRS_WRAP14
См. D3DRS_WRAP0.
D3DRS_WRAP15
См. D3DRS_WRAP0.
D3DRS_SEPARATEALPHABLENDENABLE
Значение TRUE включает отдельный режим наложения для альфа-канала. Значение по умолчанию — FALSE.

Если задано значение FALSE, коэффициенты смешения и операции, применяемые к альфа-каналу, должны быть теми же, что и для цвета. Этот режим фактически жестко устанавливает значение FALSE для реализаций, не устанавливающих ограничение D3DPMISCCAPS_SEPARATEALPHABLEND.
D3DRS_SRCBLENDALPHA
Это значение игнорируется, если D3DRS_SEPARATEALPHABLENDENABLE не имеет значение TRUE.
D3DRS_DESTBLENDALPHA
Это значение игнорируется, если D3DRS_SEPARATEALPHABLENDENABLE не имеет значение TRUE.
D3DRS_BLENDOPALPHA
Значение, используемое для выбора арифметической операции, применяемой к отдельному альфа-смешения, если для состояния отрисовки D3DRS_SEPARATEALPHABLENDENABLE задано значение TRUE.
D3DRS_FORCE_DWORD
Принудительно компилирует это перечисление до 32 бит в размере. Без этого значения некоторые компиляторы разрешали бы компиляцию этого перечисления до размера, отличного от 32 бит. Это значение не используется.

Комментарии

Эти состояния отрисовки предназначены только для внутреннего использования:

D3DRENDERSTATE_EVICTMANAGEDTEXTURES

Определяет, вытеснять ли текстуры из памяти. Драйвер использует тип данных BOOL без значения по умолчанию для определения необходимости вытеснения.

Это состояние отрисовки определяет, вытеснит ли драйвер текстуры, которыми он управляет (в отличие от текстур, управляемых средой выполнения Direct3D) из видеопамять. Если значение состояния отрисовки равно TRUE, драйвер вытесает текстуры. В противном случае драйвер не вытеснает эти текстуры.

D3DRENDERSTATE_SCENECAPTURE

Указывает либо сведения о начальной сцене, либо сведения о конце сцены для геометрических данных, захваченных в кадре. Драйвер использует тип данных BOOL со значением по умолчанию TRUE для обнаружения сведений о захвате сцены.

Драйвер отвечает на D3DRENDERSTATE_SCENECAPTURE сначала с true для сведений о начальной сцене, а затем со значением FALSE для сведений о конечной сцене для записи геометрических данных в кадре. Пример реализации см. в примере драйвера permedia2 , который поставляется вместе с пакетом средств разработки драйверов Windows (DDK). Использование состояния D3DRENDERSTATE_SCENECAPTURE отрисовки в вызове D3dDrawPrimitives2 заменяет устаревшую подпрограмму обратного вызова D3DHALCallbacks-D3dSceneCapture>.

Необходимо внимательно следить за обновлением драйвера, который реализует устаревшую процедуру обратного вызова D3DHALCallbacks-D3dSceneCapture>, до процедуры, использующий состояние D3DRENDERSTATE_SCENECAPTURE отрисовки. Подпрограмма обратного вызова D3dSceneCapture использует константы D3DHAL_SCENE_CAPTURE_START и D3DHAL_SCENE_CAPTURE_END для обозначения начала и конца сцены соответственно. Значения этих констант соответственно 0 и 1. Если эти константы используются вместо значений TRUE и FALSE в этом состоянии отрисовки, значение будет полностью противоположным значению.

D3DRS_DELETERTPATCH

Только DirectX 8.0 и более поздних версий.

Удаляет прямоугольное или треугольное исправление из памяти. Драйвер использует тип данных DWORD без значения по умолчанию для обнаружения удаляемого исправления.

Это состояние отрисовки уведомляет драйвер об удалении исправления. Значением этого состояния отрисовки является дескриптор затронутого исправления. Все кэшированные сведения должны быть освобождены, а дескриптор должен быть удален из таблицы дескрипторов исправлений драйвера. Это состояние отрисовки невидимо для приложений, но создается внутренне, когда приложение вызывает функцию DeletePatch . Это состояние отрисовки отправляется драйверу только в том случае, если исправления удалены DeletePatch явным образом. Все остальные исправления должны быть очищены при уничтожении устройства.

D3DRS_MAXPIXELSHADERINST

Только Для DirectX 9.0 и более поздних версий.

Определяет максимальное количество инструкций, которые может выполнить ассемблер пиксельных шейдеров.

Драйвер использует тип данных DWORD со значением по умолчанию D3DINFINITEINSTRUCTIONS (0xffffffff), чтобы сообщить о максимальном количестве инструкций пиксельного шейдера. Это максимальное число зависит от версии пиксельного шейдера, которая поддерживается устройством отображения, как показано в следующей таблице.

Версия максимальное число
ранее 2_0 0
2_0 С 96 по D3DINFINITEINSTRUCTIONS
3_0 и более поздние версии От 2¹⁶ (0x0000ffff) до D3DINFINITEINSTRUCTIONS

D3DINFINITEINSTRUCTIONS представляет собой практически неограниченную сумму.

Допустимыми значениями для этого состояния отрисовки являются числа, которые являются полномочиями 2; Если драйвер задает любое другое целое число, среда выполнения использует следующую ближайшую степень 2 числа.

Среда выполнения задает для элемента MaxVShaderInstructionsExecuted структуры D3DCAPS9 это максимальное число.

D3DRS_MAXVERTEXSHADERINST

Только Для DirectX 9.0 и более поздних версий.

Определяет максимальное количество инструкций, которые может выполнить ассемблер вершинных шейдеров.

Драйвер использует тип данных DWORD со значением по умолчанию D3DINFINITEINSTRUCTIONS (0xffffffff), чтобы сообщить о максимальном количестве инструкций вершинного шейдера. Это максимальное число зависит от версии вершинного шейдера, которую поддерживает устройство отображения, как показано в следующей таблице.

Версия максимальное число
ранее 2_0 0
2_0 и более поздних версий От 2¹⁶ (0x0000ffff) до D3DINFINITEINSTRUCTIONS

D3DINFINITEINSTRUCTIONS представляет собой практически неограниченную сумму.

Допустимыми значениями для этого состояния отрисовки являются числа, которые являются полномочиями 2; Если драйвер задает любое другое целое число, среда выполнения использует следующую ближайшую степень 2 числа.

Среда выполнения задает для элемента MaxVShaderInstructionsExecuted структуры D3DCAPS9 это максимальное число.

Драйвер использует эти состояния отрисовки при отрисовке графики. В документацию по пакету драйверов Windows (WDK) включены только те состояния отрисовки, которые относятся к драйверам. Состояния отрисовки, доступные для приложений DirectX, включены в документацию по пакету SDK для DirectX. Эти состояния отрисовки на уровне приложения включают такие характеристики, как включение альфа-смешивания, включение смещения, использование освещения Direct3D и тип используемого заливки.

Чтобы обновить определенное состояние отрисовки, Direct3D сохраняет сведения о состоянии отрисовки, а затем вызывает подпрограмму обратного вызова D3dDrawPrimitives2 драйвера. Сведения, предоставленные драйверу, позволяют ему:

  • Определите, что оно должно обновить одно или несколько состояний отрисовки.

  • Определите, какие состояния отрисовки следует обновить и какие должны быть новые значения состояния отрисовки.

Обратите внимание, что для выполнения определенных состояний отрисовки драйвер должен предварительно задать флаги возможностей в соответствующем элементе структуры D3DPRIMCAPS.

Чтобы указать определенное обновление состояния отрисовки, Direct3D вставляет структуру D3DHAL_DP2COMMAND в буфер команд, задавая члену bCommand этой структуры значение D3DDP2OP_RENDERSTATE (см. описание D3DDP2OP_RENDERSTATE в D3DHAL_DP2OPERATION), а также устанавливает для элемента wStateCount той же структуры число обновляемых состояний отрисовки.

Сразу после D3DHAL_DP2COMMAND структуры Direct3D вставляет одну D3DHAL_DP2RENDERSTATE структуру в буфер команд для каждого обновляемого состояния отрисовки. Элемент RenderState этой структуры определяет состояние отрисовки, которое необходимо изменить; Новое значение этого состояния отрисовки указывается в элементе dwState (для значений DWORD) или элементе fState (для D3DVALUE значений).

На следующем рисунке показана часть буфера команд, содержащая команду D3DDP2OP_RENDERSTATE и две D3DHAL_DP2RENDERSTATE структуры. Первая из трех структур указывает, что необходимо обновить два состояния отрисовки. Вторая структура указывает, что состояние D3DRENDERSTATE_FILLMODE отрисовки должно быть изменено на D3DFILL_SOLID. Третья структура указывает, что состояние отрисовки D3DRENDERSTATE_SHADEMODE должно быть обновлено до D3DSHADE_GOURAUD.

Рисунок, показывающий буфер команд с командой D3DDP2OP_RENDERSTATE и двумя D3DHAL_DP2RENDERSTATE структурами

Дополнительные примечания

Полные списки всех включенных типов состояний отрисовки см. в D3DTEXTURESTAGESTATETYPE, D3DTEXTUREOP и D3DTEXTUREFILTER перечисленных типов в документации по пакету SDK для DirectX.

В D3DRENDERSTATETYPE перечислимый тип для DirectX 5.0 и более D3DRENDERSTATETYPE были внесены некоторые изменения. D3DRENDERSTATE_BLENDENABLE полностью удален, хотя он определен как D3DRENDERSTATE_ALPHABLENDENABLE в файле заголовка d3dtypes.h . Объяснение см. в разделе D3DRENDERSTATE_COLORKEYENABLE. 128 целочисленных значений в интервале [128, 255] зарезервированы для флагов переноса координат текстуры. Они создаются с помощью макросов D3DWRAP_U и D3DWRAP_V. При использовании слова flags сохраняется прямая совместимость с координатами текстуры более высокого размера, чем двухмерная.

Многотекстовые макросы и D3DRENDERSTATE_TEXTUREFACTOR переопределяют все элементы управления на уровне текстуры (COLOR{OP,ARG1,ARG2} & ALPHA{OP,ARG1,ARG2}).

Требования

Требование Значение
Заголовок d3d9types.h (включая D3dhal.h)