Загрузка...
 
Печать

Функция IDirect3DDevice9::SetRenderState и её параметры


Функция SetRenderState (вообще, это один из методов объекта устройства Direct3D) необычайно полезна. С её помощью можно устанавливать десятки параметров (далее - рендер-стейтов), влияющих на работу объекта устройства. Всё, начиная с качества рендеринга и альфа-прозрачности и заканчивая настройками тумана и буфера трафарета, можно настраивать с помощью лишь одной этой функции, указав в качестве первого параметра нужное свойство, а в качестве второго - его значение.
Вот её прототип:

Прототип функции IDirect3DDevice9::SetRenderState
HRESULT SetRenderState(
  D3DRENDERSTATETYPE State,
  DWORD              Value
);

Функция может вызываться в разных участках кода, на протяжении всего периода существования объекта устройства Direct3D.
Вот её параметры:

Параметр Описание
D3DRENDERSTATETYPE State Рендер-стейт (опция) объекта устройства, для которого будет устанавливаться новое значение. Может быть любым из членов энумеративного типа D3DRENDERSTATETYPE (см. Таблицу 1).
DWORD Value Устанавливаемое значение свойства, указанного в первом параметре. От него же зависит и тип значения.


В качестве первого параметра функции SetRenderState указывается один из членов энумеративного типа D3DRENDERSTATETYPE, содержащий в себе т.н. рендер-стейты (states, состояния, опции) для обработки всех видов вершинных и пиксельных шейдеров.
Вот его прототип:

Прототип (шаблон) энумеративного типа D3DRENDERSTATETYPE
typedef enum D3DRENDERSTATETYPE { 
  D3DRS_ZENABLE                     = 7,
  D3DRS_FILLMODE                    = 8,
  D3DRS_SHADEMODE                   = 9,
  D3DRS_ZWRITEENABLE                = 14,
  D3DRS_ALPHATESTENABLE             = 15,
  D3DRS_LASTPIXEL                   = 16,
  D3DRS_SRCBLEND                    = 19,
  D3DRS_DESTBLEND                   = 20,
  D3DRS_CULLMODE                    = 22,
  D3DRS_ZFUNC                       = 23,
  D3DRS_ALPHAREF                    = 24,
  D3DRS_ALPHAFUNC                   = 25,
  D3DRS_DITHERENABLE                = 26,
  D3DRS_ALPHABLENDENABLE            = 27,
  D3DRS_FOGENABLE                   = 28,
  D3DRS_SPECULARENABLE              = 29,
  D3DRS_FOGCOLOR                    = 34,
  D3DRS_FOGTABLEMODE                = 35,
  D3DRS_FOGSTART                    = 36,
  D3DRS_FOGEND                      = 37,
  D3DRS_FOGDENSITY                  = 38,
  D3DRS_RANGEFOGENABLE              = 48,
  D3DRS_STENCILENABLE               = 52,
  D3DRS_STENCILFAIL                 = 53,
  D3DRS_STENCILZFAIL                = 54,
  D3DRS_STENCILPASS                 = 55,
  D3DRS_STENCILFUNC                 = 56,
  D3DRS_STENCILREF                  = 57,
  D3DRS_STENCILMASK                 = 58,
  D3DRS_STENCILWRITEMASK            = 59,
  D3DRS_TEXTUREFACTOR               = 60,
  D3DRS_WRAP0                       = 128,
  D3DRS_WRAP1                       = 129,
  D3DRS_WRAP2                       = 130,
  D3DRS_WRAP3                       = 131,
  D3DRS_WRAP4                       = 132,
  D3DRS_WRAP5                       = 133,
  D3DRS_WRAP6                       = 134,
  D3DRS_WRAP7                       = 135,
  D3DRS_CLIPPING                    = 136,
  D3DRS_LIGHTING                    = 137,
  D3DRS_AMBIENT                     = 139,
  D3DRS_FOGVERTEXMODE               = 140,
  D3DRS_COLORVERTEX                 = 141,
  D3DRS_LOCALVIEWER                 = 142,
  D3DRS_NORMALIZENORMALS            = 143,
  D3DRS_DIFFUSEMATERIALSOURCE       = 145,
  D3DRS_SPECULARMATERIALSOURCE      = 146,
  D3DRS_AMBIENTMATERIALSOURCE       = 147,
  D3DRS_EMISSIVEMATERIALSOURCE      = 148,
  D3DRS_VERTEXBLEND                 = 151,
  D3DRS_CLIPPLANEENABLE             = 152,
  D3DRS_POINTSIZE                   = 154,
  D3DRS_POINTSIZE_MIN               = 155,
  D3DRS_POINTSPRITEENABLE           = 156,
  D3DRS_POINTSCALEENABLE            = 157,
  D3DRS_POINTSCALE_A                = 158,
  D3DRS_POINTSCALE_B                = 159,
  D3DRS_POINTSCALE_C                = 160,
  D3DRS_MULTISAMPLEANTIALIAS        = 161,
  D3DRS_MULTISAMPLEMASK             = 162,
  D3DRS_PATCHEDGESTYLE              = 163,
  D3DRS_DEBUGMONITORTOKEN           = 165,
  D3DRS_POINTSIZE_MAX               = 166,
  D3DRS_INDEXEDVERTEXBLENDENABLE    = 167,
  D3DRS_COLORWRITEENABLE            = 168,
  D3DRS_TWEENFACTOR                 = 170,
  D3DRS_BLENDOP                     = 171,
  D3DRS_POSITIONDEGREE              = 172,
  D3DRS_NORMALDEGREE                = 173,
  D3DRS_SCISSORTESTENABLE           = 174,
  D3DRS_SLOPESCALEDEPTHBIAS         = 175,
  D3DRS_ANTIALIASEDLINEENABLE       = 176,
  D3DRS_MINTESSELLATIONLEVEL        = 178,
  D3DRS_MAXTESSELLATIONLEVEL        = 179,
  D3DRS_ADAPTIVETESS_X              = 180,
  D3DRS_ADAPTIVETESS_Y              = 181,
  D3DRS_ADAPTIVETESS_Z              = 182,
  D3DRS_ADAPTIVETESS_W              = 183,
  D3DRS_ENABLEADAPTIVETESSELLATION  = 184,
  D3DRS_TWOSIDEDSTENCILMODE         = 185,
  D3DRS_CCW_STENCILFAIL             = 186,
  D3DRS_CCW_STENCILZFAIL            = 187,
  D3DRS_CCW_STENCILPASS             = 188,
  D3DRS_CCW_STENCILFUNC             = 189,
  D3DRS_COLORWRITEENABLE1           = 190,
  D3DRS_COLORWRITEENABLE2           = 191,
  D3DRS_COLORWRITEENABLE3           = 192,
  D3DRS_BLENDFACTOR                 = 193,
  D3DRS_SRGBWRITEENABLE             = 194,
  D3DRS_DEPTHBIAS                   = 195,
  D3DRS_WRAP8                       = 198,
  D3DRS_WRAP9                       = 199,
  D3DRS_WRAP10                      = 200,
  D3DRS_WRAP11                      = 201,
  D3DRS_WRAP12                      = 202,
  D3DRS_WRAP13                      = 203,
  D3DRS_WRAP14                      = 204,
  D3DRS_WRAP15                      = 205,
  D3DRS_SEPARATEALPHABLENDENABLE    = 206,
  D3DRS_SRCBLENDALPHA               = 207,
  D3DRS_DESTBLENDALPHA              = 208,
  D3DRS_BLENDOPALPHA                = 209,
  D3DRS_FORCE_DWORD                 = 0x7fffffff
} D3DRENDERSTATETYPE, *LPD3DRENDERSTATETYPE;


Вот описание его членов:
Таблица 1. Члены энумеративного типа D3DRENDERSTATETYPE

Параметр Описание
D3DRS_ZENABLE Состояние (state) буфера дальности (=глубины; depth buffer). Является одним из членов другого энумеративного типа D3DZBUFFERTYPE. Возможные значения: D3DZB_TRUE включает Z-буферинг; D3DZB_USEW включает W-буферинг; D3DZB_FALSE отключает буфер глубины. Параметр автоматически устанавливает значение в D3DZB_TRUE в случае, когда для своп-цепочки был создан трафарет глубины (depth stencil) путём установки параметра EnableAutoDepthStencil структуры D3DPRESENT_PARAMETERS в TRUE. В остальных случаях значение по умолчанию D3DZB_FALSE.
D3DRS_FILLMODE Режим заполнения. Здесь указывается один и более членов другого энумеративного типа D3DFILLMODE(external link). Значение по умолчанию D3DFILL_SOLID.
D3DRS_SHADEMODE Режим затенения. Здесь указывается один и более членов другого энумеративного типа D3DSHADEMODE(external link). Значение по умолчанию D3DSHADE_GOURAUD (расчёт теней по методу Гуро).
D3DRS_ZWRITEENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения записи значений в буфер дальности (=глубины; depth buffer). Это предотвращает запись новых значений глубины буфера со стороны ОС. При значении FALSE сравнения данных с буфером глубины всё равно производятся в соответствии с опцией D3DRS_ZFUNC (при условии, что буфер глубины существует), но значения глубины в него не записываются. Значение по умолчанию FALSE.
D3DRS_ALPHATESTENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения попиксельной проверки Альфа-канала (прозрачность). В случае, если тест пройден, пиксел далее обрабатывается кадровым буфером (frame buffer). В противном случае (FALSE) любая последующая обработка данного пиксела кадровым буфером пропускается. Проверка производится путём сравнения входящего альфа-значения со "справочным" (предустановленным, заранее выбранным значением цвета альфа-канала) с применением функции сравнения, предоставляемой стейтом (опцией) D3DRS_ALPHAFUNC. Справочное значение цвета альфа-канала предустанавливается путём указания соответствующего значения в стейте D3DRS_ALPHAREF. Значение по умолчанию FALSE.
D3DRS_LASTPIXEL Переменная Булева типа. Устанаваливаем в TRUE для включения прорисовки последнего пиксела линии. Устанавливаем в FALSE для отключения. Значение по умолчанию TRUE. Более подробно смотрим в MSDN по теме "Стейт обводки и заполнения цветом": Outline and Fill State (Direct3D 9)(external link)
D3DRS_SRCBLEND Определяет поддерживаемый режим смешивания источника. Здесь указывается один из членов другого энумеративного типа D3DBLEND(external link). Значение по умолчанию D3DBLEND_ONE.
D3DRS_DESTBLEND Определяет поддерживаемый режим смешивания получателя. Здесь указывается один из членов другого энумеративного типа D3DBLEND(external link). Значение по умолчанию D3DBLEND_ZERO.
D3DRS_CULLMODE Грубо говоря, определяет, каким образом будут отсекаться (culled) невидимые треугольники. Здесь указывается один из членов другого энумеративного типа D3DCULL(external link). Значение по умолчанию D3DCULL_CCW (отсечение треугольников с вершинами в направлении против часовой стрелки).
D3DRS_ZFUNC Определяет поддерживаемую функцию сравнения. Здесь указывается один из членов другого энумеративного типа D3DCMPFUNC(external link). Значение по умолчанию D3DCMP_LESSEQUAL. В этом случае включается режим сравнения, по которому приложения может принять или отклонить пиксель, в зависимости от его расстояния до виртуальной камеры (=вьюера). Значение глубины (= координата по оси, направленной от наблюдателя в направлении его взгляда) сравнивается со значением буфер глубины. Если значение глубины данного пиксела проходит проверку, то пиксел обрабатывается для дальнейшего вывода на экран. Программные растеризеры и многие аппаратные видеоакселераторы работают быстрее, если выставлено значение D3DCMP_NEVER (всегда "проваливать" проверку), поскольку в этом случае нет необходимости фильтровать и модулировать текстуру, если пиксел всё равно не будет ренедерится на экран.
D3DRS_ALPHAREF Определяет "справочное" (=предустановленное) значение альфа-канала, с которым затем сравнивается каждый пиксель при активированнном альфа-тесте. Является 8-битной величиной, размещаемой в младших 8-ми битах значения render-state типа DWORD. Значение може изменяться в пределах от 0x00000000 до 0x000000FF. Значение по умолчанию 0 (ноль).
D3DRS_ALPHAFUNC Определяет поддерживаемую функцию сравнения. Здесь указывается один из членов другого энумеративного типа D3DCMPFUNC(external link). Значение по умолчанию D3DCMP_ALWAYS. Данное значение позволяет приложению принимать или отклонять пиксели в зависимости от значения их альфа-канала.
D3DRS_DITHERENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения дизеринга(external link) (dithering). Значение по умолчанию FALSE.
D3DRS_ALPHABLENDENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения прозрачности альфа-смешивания(external link) (alpha-blended transparency). Значение по умолчанию FALSE. Тип альфа-смешивания задаётся рендер-стейтами D3DRS_SRCBLEND и D3DRS_DESTBLEND.
D3DRS_FOGENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения смешивания тумана (fog blending). Значение по умолчанию FALSE. Более подробно смотрим тему "Туман" в MSDN: Fog (Direct3D 9)(external link)
D3DRS_SPECULARENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения спекулярной (=бликовой) подсветки (specular highlights). В этом случае спекулярный цвет добавляется к основному сразу после текстурирования объекта, но до альфа-смешивания. Спекулярная подсветка рассчитывается для каждой вершины объекта, у которого освещён его центр (pivot, центральная точка). Это даёт хороший ожидаемый результат до тех пор, пока объект "окружает" свой центр, а расстояние от источника света до объекта относительно велико. В остальных случаях результат может быть неопределённым. Значение по умолчанию FALSE.
D3DRS_FOGCOLOR Переменная типа D3DCOLOR(external link). Значение по умолчанию 0 (ноль). Более подробно смотрим тему "Цвет тумана" в MSDN: Fog Color (Direct3D 9)(external link)
D3DRS_FOGTABLEMODE Определяет т.н. "формулу тумана" (fog formula), применяемую для пиксельного тумана (pixel fog). Здесь указывается один из членов другого энумеративного типа D3DFOGMODE(external link). Значение по умолчанию D3DFOG_NONE. Более подробно смотрим тему "Пиксельный туман" в MSDN: Pixel Fog (Direct3D 9)(external link)
D3DRS_FOGSTART Глубина (=дальность), начиная с которой начинаются эффекты пиксельного или вершинного тумана при линейном режиме распространения (linear fog mode). Значение по умолчанию 0.0f. Для вершинного тумана дальность указывается в мировом пространстве координат (world space coordinates) либо в пространстве объекта устройства (0.0, 1.0). Для пиксельного тумана дальность указывается только в мировом пространстве координат. Также для пиксельного тумана эти данные рассчитываются в координатах пространства объекта устройства, когда система использует для этого третью ось z (ось глубины, дальности, направленной от наблюдателя, параллельно его взгляду), либо пространство world-world, когда система использует туман, относительно взгляда наблюдателя (eye-relative fog, w-fog). Более подробно обэтом смотрим темы "Параметры тумана" Fog Parameters (Direct3D 9)(external link) и "Пиксельный туман" Pixel Fog (Direct3D 9)(external link) в MSDN. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9
SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: pDevice9->SetRenderState(D3DRS_FOGSTART, *((DWORD*) (&fFogStart)))
D3DRS_FOGEND Глубина (=дальность), начиная с которой оканчиваются эффекты пиксельного или вершинного тумана при линейном режиме распространения (linear fog mode). Значение по умолчанию 1.0f. Для вершинного тумана дальность указывается в мировом пространстве координат (world space coordinates) либо в пространстве объекта устройства (0.0, 1.0). Для пиксельного тумана дальность указывается только в мировом пространстве координат. Также для пиксельного тумана эти данные рассчитываются в координатах пространства объекта устройства, когда система использует для этого третью ось z (ось глубины, дальности, направленной от наблюдателя, параллельно его взгляду), либо пространство world-world, когда система использует туман, относительно взгляда наблюдателя (eye-relative fog, w-fog). Более подробно обэтом смотрим темы "Параметры тумана" Fog Parameters (Direct3D 9)(external link) и "Пиксельный туман" Pixel Fog (Direct3D 9)(external link) в MSDN. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_FOGEND, *((DWORD*) (&fFogEnd)))
D3DRS_FOGDENSITY Плотность (интенсивность) тумана применяется для пиксельного и вершинного тумана с использованием экспоненциальных режимов распространения (exponential fog modes: D3DFOG_EXP и D3DFOG_EXP2). Допустимые значения плотности изменяются от 0.0 до 1.0 . Значение плотности по умолчанию 1.0. Более подробно обэтом смотрим тему "Параметры тумана" Fog Parameters (Direct3D 9)(external link). Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9
SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity)));
D3DRS_RANGEFOGENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения ранжированного вершинного тумана (range-based vertex fog). Значение по умолчанию FALSE (в этом случае применяется туман, основанный на дальности прорисовки (depth-based fog)). При включении ранжированного вершинного тумана для расчёта эффектов тумана используется величина расстояния от объекта до наблюдателя, а не координата глубины (по оси z) сцены. В случае ранжированного вершинного тумана все методы расчёта тумана работают как обычно, за исключением того обстоятельства, что для всех своих вычислений они используют ранжир (range, степень удалённости от наблюдателя) вместо координат глубины (дальности). Вообще, степень удалённости до наблюдателя это наиболее достоверный показатель для расчёта тумана. Но несмотря на это, часто для расчётов применяются именно координаты глубины, так как на вычисление поостоянно изменяющегося расстояния до объекта затрачивается время, а координата по оси z - величина постоянная и всегда доступная. В то же время, при использовании в расчётах координат глубины, возникает нежелательный эффект, когда затуманенность удалённых объектов изменяется вместе с движением взгляда наблюдателя (viewer-а). В этом случае изменяется координата глубины, а расстояние до объекта остаётся прежним. В свете того, что насегодня ни одна видеокарта не поддерживает аппаратную поддержку попиксельного ранжированного тумана, коррекция расстояния до объекта поддерживается только для вершинного тумана. Более подробно смотрим тему "Вершинный туман" в MSDN: Vertex Fog (Direct3D 9)(external link)
D3DRS_STENCILENABLE Переменная Булева типа. Устанаваливаем в TRUE для включения трафаретного шаблонирования (stenciling). Значение по умолчанию FALSE. Более подробно смотрим тему "Техника буфера трафарета" в MSDN: Stencil Buffer Techniques (Direct3D 9)(external link)
D3DRS_STENCILFAIL Операция трафаретного шаблонирования, выполняемая в случае провала теста шаблона (stencil test). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_STENCILZFAIL Операция трафаретного шаблонирования, выполняемая в случае, когда тест шаблона (stencil test) успешно пройден, а тест глубины (z-тест) завершился неудачей. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_STENCILPASS Операция трафаретного шаблонирования, выполняемая в случае, когда оба теста (тест шаблона (stencil test) и тест глубины (z-тест)) пройддены успешно. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_STENCILFUNC Функция сравнения для теста шаблона. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DCMPFUNC(external link). Значение по умолчанию D3DCMP_ALWAYS. Функция сравнения служит для сравнения справочного (предварительно установленного) значения с введённым значением буфера трафарета. Это сравнение применимо только к тем битам в справочном и введённом значениях, которые установлены в маске трафарета (маска, в свою очередь, устанавливается в рендер-стейте D3DRS_STENCILMASK). При значении TRUE тест трафарета считается пройденым.
D3DRS_STENCILREF Справочное значение типа int для проведения теста трафарета. Значение по умолчанию 0 (ноль).
D3DRS_STENCILMASK Маска, применяемая к справочному значению и каждому значению буфера трафарета для определения значимых битов теста трафарета. Маска по умолчанию: 0xFFFFFFFF
D3DRS_STENCILWRITEMASK Маска, применяемая к значениям, записываемым в буфер трафарета. Маска по умолчанию: 0xFFFFFFFF
D3DRS_TEXTUREFACTOR Цвет, используемый для мультитекстурного блендинга (смешивания; мультитекстурирования). Применяется совместно с аргументами операции мультитекстурирования D3DTA_TFACTOR или D3DTOP_BLENDFACTORALPHA. Значение данного рендер-стейта имеет тип D3DCOLOR(external link). Значением по умолчанию является белый цвет (0xFFFFFFFF).
D3DRS_WRAP0 Поведение текстур на стыках и переносах (wraps) для нескольких наборов мультитекстурных координат. Валидными (=правильными) значениями может быть любая комбинация следующих флагов: D3DWRAPCOORD_0 (или D3DWRAP_U), D3DWRAPCOORD_1 (или D3DWRAP_V), D3DWRAPCOORD_2 (или D3DWRAP_W) а также D3DWRAPCOORD_3. Данные флаги приводят к тому, что система обрезает/переносит текстуры в направлении первого, второго, третьего или четвёртого измерений.
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_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_CLIPPING Переменная Булева типа. Устанаваливаем в TRUE для включения отсечения (clipping) близкого и дальнего плана смотровой усечённой пирамиды (Viewing Frustum). Значение FALSE отключает данную опцию. Значение по умолчанию TRUE. Более подробно смотрим тему "Вьюпорты и отсечение" в MSDN: Viewports and Clipping (Direct3D 9)(external link)
D3DRS_LIGHTING Переменная Булева типа. Устанаваливаем в TRUE для включения Direct3D-освещения. Значение FALSE отключает данную опцию. Значение по умолчанию TRUE. Для корректного освещения вершины должны иметь нормали (normals). Вершины, у которых отсутствуют нормали не учитываются при расчёте освещённости (их освещённость считается нулевой).
D3DRS_AMBIENT Цвет окружающего цвета (ambient light). Значение данного рендер-стейта имеет тип D3DCOLOR(external link). Значение по умолчанию 0 (ноль).
D3DRS_FOGVERTEXMODE Формула тумана (fog formula), применяемая для расчёта вершинного тумана (vertex fog). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DFOGMODE(external link). Значение по умолчанию D3DFOG_NONED3DFOG_NONE
D3DRS_COLORVERTEX Переменная Булева типа. Устанаваливаем в TRUE для включения повершинного окрашивания (per-vertex color). Значение FALSE отключает данную опцию. Значение по умолчанию TRUE. Данный режим позволяет включать значение цвета каждой вершины в расчёт освещённости объекта. Более подробно об этом смотри описание след. рендер-стейтов: D3DRS_DIFFUSEMATERIALSOURCE, D3DRS_SPECULARMATERIALSOURCE, D3DRS_AMBIENTMATERIALSOURCE, D3DRS_EMISSIVEMATERIALSOURCE.
D3DRS_LOCALVIEWER Переменная Булева типа. Устанаваливаем в TRUE для включения отражённых бликов относительно виртуальной камеры (camera-relative specular highlights). При значение FALSE используются ортогональные (orthogonal) отражённые блики. Для приложений, использующих ортогональную проекцию необходимо указывать FALSE.
D3DRS_NORMALIZENORMALS Переменная Булева типа. Устанаваливаем в TRUE для включения автоматической нормализации (normalization) нормалей вершин. Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. Включение данной опции приводит к автоматической нормализации нормалей вершин после их трансформирования в пространство камеры/вьюера (camera space), что может потребовать дополнительного времени/ресурсов для расчётов.
D3DRS_DIFFUSEMATERIALSOURCE Цвет рассеяного источника света, учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE(external link). Значение по умолчанию D3DMCS_COLOR1. Значение данного рендер-стейта учитывается только в том случае, если рендер-стейт D3DRS_COLORVERTEX установлен в TRUE.
D3DRS_SPECULARMATERIALSOURCE Цвет отражённого света, учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE(external link). Значение по умолчанию D3DMCS_COLOR2.
3DRS_AMBIENTMATERIALSOURCE Цвет подсветки окружения (ambient light; её легко можно узнать по отсутствию видимого источника света), учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE(external link). Значение по умолчанию D3DMCS_MATERIAL.
D3DRS_EMISSIVEMATERIALSOURCE Цвет пучка света, учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE(external link). Значение по умолчанию D3DMCS_MATERIAL.
D3DRS_VERTEXBLEND Набор матриц, используемых для геометрического смешивания (geometry blending), если таковое имеется. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DVERTEXBLENDFLAGS(external link). Значение по умолчанию D3DVBF_DISABLE.
D3DRS_CLIPPLANEENABLE Включает и отключает пользовательские (user-defined) плоскости отсечения (clipping plane) усеченной пирамиды вьюера (viewer frustum). Допустимым значением может быть любая переменная типа DWORD, в которой статус каждого бита (в зависимости от того, установлен он или нет) переключает активацию стейта соответствующей, заранее подготовленной пользователем, плоскости отсечения. Последний знаковый бит отвечает за первую плоскость отсечения (с индексом 0). Все последующие биты отвечают за активацию плоскостей отсечения с более старшими индексами. Если данный бит установлен, то система применяет соответствующую плоскость отсечения при рендеринге сцены. Значение по умолчанию 0 (ноль). Для данного рендер-стейта существует спец. макрос D3DCLIPPLANEn(external link), предлагающий более удобный способ включения плоскостей отсечения.
D3DRS_POINTSIZE Значение с плавающей точкой указывает размер точки для расчётов в тех случаях, когда размер точк для каждой из вершин не задан явно. Данное значение не используется, когда вершина содержит точку заданного размера. Данное значение указывается в единицах пространства экрана (screen space units). Значением по умолчанию является значение, возвращаемое драйвером устройства. Если драйвер возвращает значение 0 или 1, то в этом случае значение по умолчанию: 64, которое, в свою очередь, разрешает программную эмуляцию размера точки. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&pointSize));
D3DRS_POINTSIZE_MIN Значение с плавающей точкой указывает минимальный размер точечных примитивов (point primitives). Точечные примитивы (размер которых на экране близок к одной точке) во время рендеринга автоматически приводятся к значению данного рендер-стейта. Указание значения менее 1.0 приводит к т.н. "выбросу точек" (points dropping out) в тех случаях, когда точка не покрывает центра пиксела изображения и антиалиасинг выключен, либо когда он включен, но рендеринг производится с пониженной интенсивностью. Значение по умолчанию 1.0f. Значение всегда больше или равно 0.0f. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9
SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_POINTSIZE_MIN, *((DWORD*)&pointSizeMin));
D3DRS_POINTSPRITEENABLE Переменная Булева типа. При значении TRUE текстурные координаты точечных примитивов устанавливаются таким образом, что на точку накладывается вся текстура целиком. При значении FALSE для данной точки используеются вершинные координаты текстур. Значение по умолчанию FALSE. В качестве альтернативы можно применить т.н. стиль DirectX7 (когда разрешены точки размером в 1 пиксел) путём установки рендер-стейта D3DRS_POINTSCALEENABLE в FALSE и присвоения рендер-стейту D3DRS_POINTSIZE значения 1.0 (являются значениями по умолчанию).
D3DRS_POINTSCALEENABLE Переменная Булева типа, которая контролирует расчёт размеров точечных примитивов. При значении TRUE для расчёта итогового размера точки в пространстве экрана первоначальный размер точки интерпретируется как значение пространства камеры (camera space value; viewer space value), которое затем масштабируется функцией расстояния (distance function) с учётом отношения y-координаты усечённой пирамиды вьюера и самого вьюера (вьюпорта, viewport). При значении FALSE размер точки интерпретируется в качестве значения пространства экрана и используется напрямую. Значение по умолчанию FALSE.
D3DRS_POINTSCALE_A Значение с плавающей точкой, которое контролирует затухание (attenuation) точечных примитивов, основанное на расстоянии до них. Данный рендер-стейт активен, только если рендер-стейт D3DRS_POINTSCALEENABLE установлен в TRUE. Значение по умолчанию 1.0f. Значение всегда больше или равно 0.0f. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9::SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_POINTSCALE_A, *((DWORD*)&pointScaleA));
D3DRS_POINTSCALE_B Значение с плавающей точкой, которое контролирует затухание (attenuation) точечных примитивов, основанное на расстоянии до них. Данный рендер-стейт активен, только если рендер-стейт D3DRS_POINTSCALEENABLE установлен в TRUE. Значение по умолчанию 1.0f. Значение всегда больше или равно 0.0f. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9::SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_POINTSCALE_B, *((DWORD*)&pointScaleB));
D3DRS_POINTSCALE_C Значение с плавающей точкой, которое контролирует затухание (attenuation) точечных примитивов, основанное на расстоянии до них. Данный рендер-стейт активен, только если рендер-стейт D3DRS_POINTSCALEENABLE установлен в TRUE. Значение по умолчанию 1.0f. Значение всегда больше или равно 0.0f. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9::SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_POINTSCALE_C, *((DWORD*)&pointScaleC));
D3DRS_MULTISAMPLEANTIALIAS Переменная Булева типа, которая определяет, каким образом отдельные сэмплы изображения будут просчитываться при использовании мультисемплерного буфера цели рендеринга (multisampling render-target buffer). При значении TRUE несколько сэмплов изображения налагаются друг на друга и просчитываются, что даёт полноценный антиалиасинг всей сцены путём сэмплирования каждого сэмпла на разных сэмпл-позициях. При значении FALSE несколько сэмплов (проб) записываются в одно сэмпл-значение, сэмплированное в области центрального пиксела, что даёт безантиалиасный рендеринг для мультисэмплингового буфера (multisample buffer). Данный рендер-стейт не даёт никакого эффекта при рендеринге в одинарный сэмпл-буфер (single sample buffer). Значение по умолчанию TRUE.
D3DRS_MULTISAMPLEMASK Каждый бит этой маски, начиная с наименее значимого бита (least significant bit, LSB), контролирует модификацию одного из сэмплов мультисемплерного буфера цели рендеринга (multisampling render-target buffer). Так для 8-сэмплерного буфера цели, младший (lowest) байт содержит 8 ячеек для записи, для каждого из 8 сэмплов. Данный рендер-стейт не даёт никакого эффекта при рендеринге в одинарный сэмпл-буфер (single sample buffer). Значение по умолчанию: 0xFFFFFFFF. Данный рендер-стейт включает использование мультисэмплерного буфера в качестве буфера-накопителя (accumulation buffer). При этом производится многопроходный (multipass) рендеринг геометрии, где каждый проход обновляет значения набора сэмплов. Например, если есть n мультисэмплов и k доступных сэмплов, итоговая интенсивность отрендеренного изображения будет вычисляться по формуле k/n. При этом каждый компонент палитры RGB будет обрабатываться с учётом интенсивности k/n.
D3DRS_PATCHEDGESTYLE Устанавливает, каким образом патч-ребро (patch edge) будет использовать изменяемоый стиль тесселяции (float style tessellation). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DPATCHEDGESTYLE(external link). Значение по умолчанию: D3DPATCHEDGE_DISCRETE.
D3DRS_DEBUGMONITORTOKEN Устанавливается только при активном мониторе отладки (debugging monitor). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DDEBUGMONITORTOKENS(external link). Учти, что при установленном рендер-стейте D3DRS_DEBUGMONITORTOKEN вызов функции подменяется и токен (от агл. "жетон") передаётся в монитор отладки. К примеру, после передачи D3DDMT_ENABLE или D3DDMT_DISABLE в рендер-стейт D3DRS_DEBUGMONITORTOKEN, другие значения токенов также обрабатываются и статус (включен или выключен) монитора отладки будет оставаться. Данный рендер-стейт полезен только при создании отладочных билдов приложения. Значение по умолчанию: D3DDMT_ENABLE.
D3DRS_POINTSIZE_MIN Значение с плавающей точкой указывает максимальный размер, при котором точечные примитивы (point primitives) будут показываться как одна точка. Точечные примитивы (размер которых на экране близок к одной точке) во время рендеринга автоматически приводятся к значению данного рендер-стейта. Значение может быть меньше или равно значению члена MaxPointSize структуры D3DCAPS9(external link) и обязательно больше или равно значению рендер-стейта D3DRS_POINTSIZE_MIN. Значение по умолчанию 64.0 . Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState(D3DRS_PONTSIZE_MAX, *((DWORD*)&pointSizeMax));
D3DRS_INDEXEDVERTEXBLENDENABLE Переменная Булева типа, которая включает и отключает слияние индексов вершин (index vertex blending). Значение по умолчанию FALSE. При установленном значении TRUE слияние индексов вершин включено и игрокодер должен передать матрицу индексов каждой вершины, приведённую к типу packed DWORD. При значении FALSE - слияние индексов вершин выключено. Когда данный рендер-стейт выключен, а слияние вершин включено (через рендер-стейт D3DRS_VERTEXBLEND), то каждая вершина имеет индексы матрицы 0, 1, 2, 3.
D3DRS_COLORWRITEENABLE Значение типа UINT, которое активирует поканальную (per-channel) запись в цветовой буфер цели рендеринга (render-target color buffer). Итоговый набор битов в дальнейшем обновляется во время 3D-рендеринга. При очищенном (=нулевом) наборе бит цветовой канал не изменяется. Данный функционал доступен только если бит D3DPMISCCAPS_COLORWRITEENABLE соответствует значению члена PrimitiveMiscCaps структуры D3DCAPS9(external link) для данного объекта устройства. Данный рендер-стейт не влияет на операцию очищения (clear operation). Значение по умолчанию 0x0000000F . Допустимыми значениями данного рендер-стейта могут быть любая комбинация флагов D3DCOLORWRITEENABLE_ALPHA, D3DCOLORWRITEENABLE_BLUE, D3DCOLORWRITEENABLE_GREEN и D3DCOLORWRITEENABLE_RED.
D3DRS_BLENDOP Значение указывает выбранную арифметическую операцию при установленном в TRUE рендер-стейте альфа-смешивания D3DRS_ALPHABLENDENABLE. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DBLENDOP(external link). Значение по умолчанию: D3DBLENDOP_ADD (сложение). Если данным устройством не поддерживается D3DPMISCCAPS_BLENDOP, то также производится D3DBLENDOP_ADD.
DD3DRS_POSITIONDEGREE Режим интерполяции позиции N-патча (N-patch position interpolation degree). Возможных значений всего два: D3DDEGREE_CUBIC (по умолчанию) и D3DDEGREE_LINEAR. Более подробно смотрим описание энумартивного типа D3DDEGREETYPE enumeration в MSDN: D3DDEGREETYPE enumeration(external link)
D3DRS_NORMALDEGREE Режим интерполяции нормалей N-патча (N-patch normals interpolation degree). Возможных значений всего два: D3DDEGREE_LINEAR (по умолчанию) и D3DDEGREE_QUADRATIC. Более подробно смотрим описание энумартивного типа D3DDEGREETYPE enumeration в MSDN: D3DDEGREETYPE enumeration(external link)
D3DRS_SCISSORTESTENABLE Переменная Булева типа. Устанавливаем в TRUE для включения т.н. "проверки на ножницы" (scissors test). Значение FALSE отключает данную опцию. Проверка на ножницы отсекает пиксели, находящегося за пределами (снаружи) т.н. "вырезанного ножницами прямоугольника" (заранее заданной программистом прямоугольной субсекции цели рендеринга). Значение по умолчанию FALSE. Более подробно смотрим тему "Тест на ножницы" в MSDN: Scissor Test (Direct3D 9)(external link)
D3DRS_SLOPESCALEDEPTHBIAS Используется для определения допустимого отклонения ("bias" англ. - отклонение, погрешность) в представлении копланарных (от англ. "coplanar" - расположенный в одной плоскости) примитивов для снижения эффекта т.н. z-конфликта (z-fighting). Значение по умолчанию 0. Отклонение высчитывается по формуле: bias = (max * D3DRS_SLOPESCALEDEPTHBIAS) + D3DRS_DEPTHBIAS, где max - это максимальная величина наклона отрендеренного треугольника.
D3DRS_ANTIALIASEDLINEENABLE Переменная Булева типа. Устанавливаем в TRUE для включения антиалиасинга линий (line antialiasing). Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. При рендеринге в мультисэмплерную цель рендеринга (multisampling render target) значение данного рендер-стейта игнорируется и все линии рендерятся как есть (aliased; без антиалиасинга). В этом случае для вывода антиалиасных линий в мультисемплерной цели рендеринга необходимо применять интерфейс ID3DXLine(external link).
D3DRS_MINTESSELLATIONLEVEL Минимальный уровень тесселяции. Значение по умолчанию 1.0f. Более подробно смотрим тему "Тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_MAXTESSELLATIONLEVEL Максимальный уровень тесселяции. Значение по умолчанию 1.0f. Более подробно смотрим тему "Тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_ADAPTIVETESS_X Уровень (порог) адаптивной тесселяции по оси X. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_ADAPTIVETESS_Y Уровень (порог) адаптивной тесселяции по оси Y. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_ADAPTIVETESS_Z Уровень (порог) адаптивной тесселяции по оси Z. Значение по умолчанию 1.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_ADAPTIVETESS_W Уровень (порог) адаптивной тесселяции в направлении W. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_ENABLEADAPTIVETESSELLATION Переменная Булева типа. Устанавливаем в TRUE для включения адаптивной тесселяции (adaptive tesselation). Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9)(external link)
D3DRS_TWOSIDEDSTENCILMODE Переменная Булева типа. Устанавливаем в TRUE для включения двустороннего шаблонирования (two-sided stenciling). Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. При включении данного рендер-стейта другой рендер-стейт D3DRS_CULLMODE должен иметь значение D3DCULL_NONE. Если отсчёт вершин треугольника (triangle winding order) производится по часовой стрелке, то в этом случае используются рендер-стейты группы D3DRS_STENCIL*. Если против часовой, то используются рендер-стейты группы D3DRS_CCW_STENCIL*. Для проверки поддержки устройством двустороннего шаблонирования проверь, что члену StencilCaps структуры D3DCAPS9(external link) присвоено значение D3DSTENCILCAPS_TWOSIDED. Более подробно смотрим описание флагов D3DSTENCILCAPS(external link) в MSDN.
D3DRS_CCW_STENCILFAIL Операция шаблонирования (stencil operation), которая выполняется при провале теста шаблонирования против часовой стрелки (CCW stencil test). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_CCW_STENCILZFAIL Операция шаблонирования (stencil operation), которая выполняется в том случае, когда тест шаблонирования против часовой стрелки (CCW stencil test) пройден успешно, а z-тест провален. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_CCW_STENCILPASS Операция шаблонирования (stencil operation), которая выполняется в том случае, когда и тест шаблонирования против часовой стрелки (CCW stencil test) и z-тест пройдены успешно. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP(external link). Значение по умолчанию D3DSTENCILOP_KEEP.
D3DRS_CCW_STENCILFUNC Функция сравнения. Тест шаблонирования против часовой стрелки (CCW stencil test) считается пройденным, когда ((ref & mask) функция шаблонирования (stencil & mask)) возвращает TRUE. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DCMPFUNC(external link). Значение по умолчанию D3DCMP_ALWAYS.
D3DRS_COLORWRITEENABLE1 Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9(external link). Значение по умолчанию 0x0000000f .
D3DRS_COLORWRITEENABLE2 Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9(external link). Значение по умолчанию 0x0000000f .
D3DRS_COLORWRITEENABLE3 Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9(external link). Значение по умолчанию 0x0000000f .
D3DRS_BLENDFACTOR Значение типа D3DCOLOR, используемое в качестве постоянного бленд-фактора (constant blend-factor) при альфа-смешивании (alpha blending). Данная функция доступна, только если для объекта устройства установлен бит D3DPBLENDCAPS_BLENDFACTOR в члене SrcBlendCaps структуры D3DCAPS9(external link) или присвоено значение члену DestBlendCaps там же. Более подробно смотрим описание энумеративного типа D3DRENDERSTATETYPE(external link) в MSDN. Значение по умолчанию 0xffffffff .
D3DRS_SRGBWRITEENABLE Активирует запись в цель рендеринга (render tarrget) данных корректирования гаммы под формат sRGB. Формат значения должен быть экспонирован интерфейсом D3DUSAGE_SRGBWRITE. Значение по умолчанию 0.
D3DRS_DEPTHBIAS Значение с плавающей точкой, которое используется для сравнения значений глубины/дальности прорисовки. Значение по умолчанию 0. Более подробно смотрим тему "Отклонение величины дальности/глубины" в MSDN: Depth Bias (Direct3D 9)(external link)
D3DRS_SEPARATEALPHABLENDENABLE Переменная Булева типа. Устанавливаем в TRUE для включения раздельного режима смешивания (separate blend mode) для альфа-канала. Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. При установке в FALSE, факторы и операторы смешивания цели рендеринга, которые применяются к альфа-каналу, принудительно приводятся к тем же факторам и операторам, что определены для цвета. Данный рендер-стейт рекомендуется устанавливать в FALSE в реализациях, которые не устанавливают флаг D3DPMISCCAPS_SEPARATEALPHABLEND. Более подробно смотрим тему D3DPMISCCAPS(external link) в MSDN.
D3DRS_SRCBLENDALPHA Значение источника альфа-смешивания. Здесь указывается один из членов другого энумеративного типа D3DBLEND(external link). Значение данного рендер-стейта игнорируется до тех пор, пока рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE не будет установлен в TRUE. Значение по умолчанию D3DBLEND_ONE.
D3DRS_DESTBLENDALPHA Значение получателя альфа-смешивания. Здесь указывается один из членов другого энумеративного типа D3DBLEND(external link). Значение данного рендер-стейта игнорируется до тех пор, пока рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE не будет установлен в TRUE. Значение по умолчанию D3DBLEND_ZERO.
D3DRS_BLENDOPALPHA Значение используется для выбора арифметической операции, применяемой к раздельному альфа-смешиванию (separate alpha blending). Причём, только в том случае, когда рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE установлен в TRUE. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DBLENDOP(external link). Значение по умолчанию D3DBLENDOP_ADD. Если объект устройства не поддерживает рендер-стейт D3DPMISCCAPS_BLENDOP, то применяется значение D3DBLENDOP_ADD. Более подробно смотрим тему D3DPMISCCAPS(external link) в MSDN.
D3DRS_FORCE_DWORD Принуждает компилировать данную энумерацию в 32-битном размере. Без установки данного рендер-стейта некоторые компиляторы допускают компилирование данной энумерации в размере отличном от 32-битного. Данное значение не используется.

Примечания

Direct3D определяет константу D3DRENDERSTATE_WRAPBIAS как удобство для включения/выключения в приложении поддержки разверток текстур (texture wrapping), основанной на значении типа integer набора текстурных координат (texture coordinate set) (вместо того, чтобы явно использовать один из рендер-стейтов группы D3DRS_WRAP n). Добавляем значение рендер-стейта D3DRENDERSTATE_WRAPBIAS к основанному на нуле (zero-based) индексу текстурного набора координат для вычисления значений рендер-стейтов группы D3DRS_WRAP n, которые соответствуют данному индексу, как это показано в следующем примере:

Пример
// Включаем U/V развёртку для текстур, которые используют 
// набор текстурных координат в индексе за пределами переменной dwIndex
    
HRESULT hr = pd3dDevice->SetRenderState(
dwIndex + D3DRENDERSTATE_WRAPBIAS,  
D3DWRAPCOORD_0 | D3DWRAPCOORD_1);
     
// Если dwIndex равен 3, то результат сложения
// равен D3DRS_WRAP3 (131)

Требования

Для использования функции IDirect3DDevice9::SetRenderState подключаем заголовок D3D9Types.h


Contributors to this page: slymentat .
Последнее изменение страницы Пятница 21 / Октябрь, 2016 09:20:08 MSK автор slymentat.

Последние комментарии

No records to display