Функция SetRenderState и её параметры
Содержание
Intro
Функция SetRenderState (вообще, это один из методов объекта устройства Direct3D) необычайно полезна. С её помощью можно устанавливать десятки параметров (далее - рендер-стейтов), влияющих на работу объекта устройства. Всё, начиная с качества рендеринга и альфа-прозрачности и заканчивая настройками тумана и буфера трафарета, можно настраивать с помощью лишь одной этой функции, указав в качестве первого параметра нужное свойство, а в качестве второго - его значение. Вот её прототип (DirectX 9):HRESULT SetRenderState( D3DRENDERSTATETYPE State, DWORD Value);
Функция может вызываться в разных участках кода, на протяжении всего периода существования объекта устройства Direct3D.
Параметры функции SetRenderState
Вот описание её параметров:ПАРАМЕТР | ОПИСАНИЕ |
---|---|
D3DRENDERSTATETYPE State | Рендер-стейт (опция) объекта устройства, для которого будет устанавливаться новое значение. Может быть любым из членов энумеративного типа D3DRENDERSTATETYPE (см. Таблицу 1). |
DWORD Value | Устанавливаемое значение свойства, указанного в первом параметре. От него же зависит и тип значения. |
В качестве первого параметра функции SetRenderState указывается один из членов энумеративного типа D3DRENDERSTATETYPE, содержащий в себе т.н. рендер-стейты (states, состояния, опции) для обработки всех видов вершинных и пиксельных шейдеров. Вот его описание:
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. Значение по умолчанию D3DFILL_SOLID. |
D3DRS_SHADEMODE | Режим затенения. Здесь указывается один и более членов другого энумеративного типа D3DSHADEMODE. Значение по умолчанию 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). |
D3DRS_SRCBLEND | Определяет поддерживаемый режим смешивания источника. Здесь указывается один из членов другого энумеративного типа D3DBLEND. Значение по умолчанию D3DBLEND_ONE. |
D3DRS_DESTBLEND | Определяет поддерживаемый режим смешивания получателя. Здесь указывается один из членов другого энумеративного типа D3DBLEND. Значение по умолчанию D3DBLEND_ZERO. |
D3DRS_CULLMODE | Грубо говоря, определяет, каким образом будут отсекаться (culled) невидимые треугольники. Здесь указывается один из членов другого энумеративного типа D3DCULL. Значение по умолчанию D3DCULL_CCW (отсечение треугольников с вершинами в направлении против часовой стрелки). |
D3DRS_ZFUNC | Определяет поддерживаемую функцию сравнения. Здесь указывается один из членов другого энумеративного типа D3DCMPFUNC. Значение по умолчанию D3DCMP_LESSEQUAL. В этом случае включается режим сравнения, по которому приложения может принять или отклонить пиксель, в зависимости от его расстояния до виртуальной камеры (=вьюера). Значение глубины ( = координата по оси, направленной от наблюдателя в направлении его взгляда) сравнивается со значением буфер глубины. Если значение глубины данного пиксела проходит проверку, то пиксел обрабатывается для дальнейшего вывода на экран. Программные растеризеры и многие аппаратные видеоакселераторы работают быстрее, если выставлено значение D3DCMP_NEVER (всегда "проваливать" проверку), поскольку в этом случае нет необходимости фильтровать и модулировать текстуру, если пиксел всё равно не будет рендериться на экран. |
D3DRS_ALPHAREF | Определяет "справочное" (=предустановленное) значение альфа-канала, с которым затем сравнивается каждый пиксель при активированном альфа-тесте. Является 8-битной величиной, размещаемой в младших 8-ми битах значения render-state типа DWORD. Значение может изменяться в пределах от 0x00000000 до 0x000000FF. Значение по умолчанию 0 (ноль). |
D3DRS_ALPHAFUNC | Определяет поддерживаемую функцию сравнения. Здесь указывается один из членов другого энумеративного типа D3DCMPFUNC. Значение по умолчанию D3DCMP_ALWAYS. Данное значение позволяет приложению принимать или отклонять пиксели в зависимости от значения их альфа-канала. |
D3DRS_DITHERENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения дизеринга (dithering). Значение по умолчанию FALSE. |
D3DRS_ALPHABLENDENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения прозрачности альфа-смешивания (alpha-blended transparency). Значение по умолчанию FALSE. Тип альфа-смешивания задаётся рендер-стейтами D3DRS_SRCBLEND и D3DRS_DESTBLEND. |
D3DRS_FOGENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения смешивания тумана (fog blending). Значение по умолчанию FALSE. Более подробно смотрим тему "Туман" в MSDN: https://docs.microsoft.com/en-us/windows/win32/direct3d9/fog |
D3DRS_RANGEFOGENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения ранжированного вершинного тумана (range-based vertex fog). Значение по умолчанию FALSE (в этом случае применяется туман, основанный на дальности прорисовки (depth-based fog)). При включении ранжированного вершинного тумана для расчёта эффектов тумана используется величина расстояния от объекта до наблюдателя, а не координата глубины (по оси z) сцены. В случае ранжированного вершинного тумана все методы расчёта тумана работают как обычно, за исключением того обстоятельства, что для всех своих вычислений они используют ранжир (range, степень удалённости от наблюдателя) вместо координат глубины (дальности). Вообще, степень удалённости до наблюдателя это наиболее достоверный показатель для расчёта тумана. Но несмотря на это, часто для расчётов применяются именно координаты глубины, так как на вычисление поостоянно изменяющегося расстояния до объекта затрачивается время, а координата по оси z -величина постоянная и всегда доступная. В то же время, при использовании в расчётах координат глубины, возникает нежелательный эффект, когда затуманенность удалённых объектов изменяется вместе с движением взгляда наблюдателя (viewer-а). В этом случае изменяется координата глубины, а расстояние до объекта остаётся прежним. В свете того, что на сегодня ни одна видеокарта не поддерживает аппаратную поддержку попиксельного ранжированного тумана, коррекция расстояния до объекта поддерживается только для вершинного тумана. Более подробно смотрим тему "Вершинный туман" в MSDN: https://docs.microsoft.com/en-us/windows/win32/direct3d9/vertex-fogVertex Fog (Direct3D 9). |
D3DRS_FOGCOLOR | Переменная типа D3DCOLOR. Значение по умолчанию 0 (ноль). Более подробно смотрим тему "Цвет тумана" в MSDN: https://docs.microsoft.com/en-us/windows/win32/direct3d9/fog-color |
D3DRS_FOGTABLEMODE | Определяет т.н. "формулу тумана" (fog formula), применяемую для пиксельного тумана (pixel fog). Здесь указывается один из членов другого энумеративного типа D3DFOGMODE. Значение по умолчанию D3DFOG_NONE. Более подробно смотрим тему "Пиксельный туман" в MSDN: Pixel Fog (Direct3D 9). |
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) и "Пиксельный туман" Pixel Fog (Direct3D 9) в 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)0 и "Пиксельный туман" Pixel Fog (Direct3D 9)0 в MSDN. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9 :: SetRenderState принимает в качестве параметра только значения типа 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). Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9::SetRenderState принимает в качестве параметра только значения типа DWORD. Поэтому производим явное приведение типов: m_pDevice9->SetRenderState (D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity))) ; |
D3DRS_FOGVERTEXMODE | Формула тумана (fog formula), применяемая для расчёта вершинного тумана (vertex fog). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DFOGMODE. Значение по умолчанию D3DFOG_NONE. |
D3DRS_SPECULARENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения спекулярной (=бликовой) подсветки (specular highlights). В этом случае спекулярный цвет добавляется к основному сразу после текстурирования объекта, но ДО альфа-смешивания. Спекулярная подсветка рассчитывается для каждой вершины объекта, у которого освещён его центр (pivot, центральная точка). Это даёт хороший ожидаемый результат до тех пор, пока объект "окружает" свой центр, а расстояние от источника света до объекта относительно велико. В остальных случаях результат может быть неопределённым. Значение по умолчанию FALSE. |
D3DRS_STENCILENABLE | Переменная Булева типа. Устанаваливаем в TRUE для включения трафаретного шаблонирования (stenciling). Значение по умолчанию FALSE. Более подробно смотрим тему "Техника буфера трафарета" в MSDN: Stencil Buffer Techniques (Direct3D 9). |
D3DRS_STENCILFAIL | Операция трафаретного шаблонирования, выполняемая в случае провала теста шаблона (stencil test). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_STENCILZFAIL | Операция трафаретного шаблонирования, выполняемая в случае, когда тест шаблона (stencil test) успешно пройден, а тест глубины (z-тест) завершился неудачей. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_STENCILPASS | Операция трафаретного шаблонирования, выполняемая в случае, когда оба теста (тест шаблона (stencil test) и тест глубины (z-тест)) пройдены успешно. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_STENCILFUNC | Функция сравнения для теста шаблона. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DCMPFUNC. Значение по умолчанию D3DCMP_ALWAYS. Функция сравнения служит для сравнения справочного (предварительно установленного) значения с введённым значением буфера трафарета. Это сравнение применимо только к тем битам в справочном и введённом значениях, которые установлены в маске трафарета (маска, в свою очередь, устанавливается в рендер-стейте D3DRS_STENCILMASK). При значении TRUE тест трафарета считается пройденным. |
D3DRS_STENCILREF | Справочное значение типа int для проведения теста трафарета. Значение по умолчанию 0 (ноль). |
D3DRS_STENCILMASK | Маска, применяемая к справочному значению и каждому значению буфера трафарета для определения значимых битов теста трафарета. Маска по умолчанию: 0xFFFFFFFF . |
D3DRS_STENCILWRITEMASK | Маска, применяемая к значениям, записываемым в буфер трафарета. Маска по умолчанию: 0xFFFFFFFF . |
D3DRS_TEXTUREFACTOR | Цвет, используемый для мультитекстурного блендинга (смешивания; мультитекстурирования). Применяется совместно с аргументами операции мультитекстурирования D3DTA_TFACTOR или D3DTOP_BLENDFACTORALPHA. Значение данного рендер-стейта имеет тип D3DCOLOR. Значением по умолчанию является белый цвет (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). |
D3DRS_LIGHTING | Переменная Булева типа. Устанавливаем в TRUE для включения Direct3D-освещения. Значение FALSE отключает данную опцию. Значение по умолчанию TRUE. Для корректного освещения вершины должны иметь нормали (normals). Вершины, у которых отсутствуют нормали не учитываются при расчёте освещённости (их освещённость считается нулевой). |
D3DRS_AMBIENT | Цвет окружающего цвета (ambient light). Значение данного рендер-стейта имеет тип D3DCOLOR. Значение по умолчанию 0 (ноль). |
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. Значение по умолчанию D3DMCS_COLOR1. Значение данного рендер-стейта учитывается только в том случае, если рендер-стейт D3DRS_COLORVERTEX установлен в TRUE. |
D3DRS_SPECULARMATERIALSOURCE | Цвет отражённого света, учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE. Значение по умолчанию D3DMCS_COLOR2. |
3DRS_AMBIENTMATERIALSOURCE | Цвет подсветки окружения (ambient light; её легко можно узнать по отсутствию видимого источника света), учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE. Значение по умолчанию D3DMCS_MATERIAL. |
D3DRS_EMISSIVEMATERIALSOURCE | Цвет пучка света, учитываемый при расчёте освещённости сцены и объектов на ней. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DMATERIALCOLORSOURCE. Значение по умолчанию D3DMCS_MATERIAL. |
D3DRS_VERTEXBLEND | Набор матриц, используемых для геометрического смешивания (geometry blending), если таковое имеется. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DVERTEXBLENDFLAGS. Значение по умолчанию D3DVBF_DISABLE. |
D3DRS_CLIPPLANEENABLE | Включает и отключает пользовательские (user-defined) плоскости отсечения (clipping plane) усеченной пирамиды вьюера (viewer frustum). Допустимым значением может быть любая переменная типа DWORD, в которой статус каждого бита (в зависимости от того, установлен он или нет) переключает активацию стейта соответствующей, заранее подготовленной пользователем, плоскости отсечения. Последний знаковый бит отвечает за первую плоскость отсечения (с индексом 0). Все последующие биты отвечают за активацию плоскостей отсечения с более старшими индексами. Если данный бит установлен, то система применяет соответствующую плоскость отсечения при рендеринге сцены. Значение по умолчанию 0 (ноль). Для данного рендер-стейта существует спец. макрос D3DCLIPPLANEn, предлагающий более удобный способ включения плоскостей отсечения. |
D3DRS_POINTSIZE | Значение с плавающей точкой указывает размер точки для расчётов в тех случаях, когда размер точки для каждой из вершин не задан явно. Данное значение не используется, когда вершина содержит точку заданного размера. Данное значение указывается в единицах пространства экрана (screen space units). Значением по умолчанию является значение, возвращаемое драйвером устройства. Если драйвер возвращает значение 0 или 1, то в этом случае значение по умолчанию: 64, которое, в свою очередь, разрешает программную эмуляцию размера точки. Значением данного рендер-стейта является число с плавающей точкой. Но, метод IDirect3DDevice9 :: SetRenderState принимает в качестве параметра только значения типа 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. Значение по умолчанию: D3DPATCHEDGE_DISCRETE. |
D3DRS_DEBUGMONITORTOKEN | Устанавливается только при активном мониторе отладки (debugging monitor). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DDEBUGMONITORTOKENS. Учти, что при установленном рендер-стейте D3DRS_DEBUGMONITORTOKEN вызов функции подменяется и токен (от агл. "жетон") передаётся в монитор отладки. К примеру, после передачи D3DDMT_ENABLE или D3DDMT_DISABLE в рендер-стейт D3DRS_DEBUGMONITORTOKEN, другие значения токенов также обрабатываются и статус (включен или выключен) монитора отладки будет оставаться. Данный рендер-стейт полезен только при создании отладочных билдов приложения. Значение по умолчанию: D3DDMT_ENABLE. |
D3DRS_POINTSIZE_MIN | Значение с плавающей точкой указывает максимальный размер, при котором точечные примитивы (point primitives) будут показываться как одна точка. Точечные примитивы (размер которых на экране близок к одной точке) во время рендеринга автоматически приводятся к значению данного рендер-стейта. Значение может быть меньше или равно значению члена MaxPointSize структуры D3DCAPS9 и обязательно больше или равно значению рендер-стейта D3DRS_POINTSIZE_MIN. Значение по умолчанию 64.0 . Значением данного рендер-стейта является число с плавающей точкой. Но метод IDirect3DDevice9 :: SetRenderState принимает в качестве параметра только значения типа 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 для данного объекта устройства. Данный рендер-стейт не влияет на операцию очищения (clear operation). Значение по умолчанию 0x0000000F . Допустимыми значениями данного рендер-стейта может быть любая комбинация флагов D3DCOLORWRITEENABLE_ALPHA, D3DCOLORWRITEENABLE_BLUE, D3DCOLORWRITEENABLE_GREEN и D3DCOLORWRITEENABLE_RED. |
D3DRS_BLENDOP | Значение указывает выбранную арифметическую операцию при установленном в TRUE рендер-стейте альфа-смешивания D3DRS_ALPHABLENDENABLE. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DBLENDOP. Значение по умолчанию: D3DBLENDOP_ADD (сложение). Если данным устройством не поддерживается D3DPMISCCAPS_BLENDOP, то также производится D3DBLENDOP_ADD. |
DD3DRS_POSITIONDEGREE | Режим интерполяции позиции N-патча (N-patch position interpolation degree). Возможных значений всего два: D3DDEGREE_CUBIC (по умолчанию) и D3DDEGREE_LINEAR. Более подробно смотрим описание энумартивного типа D3DDEGREETYPE в MSDN: D3DDEGREETYPE enumeration. |
D3DRS_NORMALDEGREE | Режим интерполяции нормалей N-патча (N-patch normals interpolation degree). Возможных значений всего два: D3DDEGREE_LINEAR (по умолчанию) и D3DDEGREE_QUADRATIC. Более подробно смотрим описание энумартивного типа D3DDEGREETYPE в MSDN: D3DDEGREETYPE enumeration. |
D3DRS_SCISSORTESTENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения т.н. "проверки на ножницы" (scissors test). Значение FALSE отключает данную опцию. Проверка на ножницы отсекает пиксели, находящегося за пределами (снаружи) т.н. "вырезанного ножницами прямоугольника" (заранее заданной программистом прямоугольной субсекции цели рендеринга). Значение по умолчанию FALSE. Более подробно смотрим тему "Тест на ножницы" в MSDN: Scissor Test (Direct3D 9). |
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. |
D3DRS_MINTESSELLATIONLEVEL | Минимальный уровень тесселяции. Значение по умолчанию 1.0f. Более подробно смотрим тему "Тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_MAXTESSELLATIONLEVEL | Максимальный уровень тесселяции. Значение по умолчанию 1.0f. Более подробно смотрим тему "Тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_ADAPTIVETESS_X | Уровень (порог) адаптивной тесселяции по оси X. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_ADAPTIVETESS_Y | Уровень (порог) адаптивной тесселяции по оси Y. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_ADAPTIVETESS_Z | Уровень (порог) адаптивной тесселяции по оси Z. Значение по умолчанию 1.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_ADAPTIVETESS_W | Уровень (порог) адаптивной тесселяции по оси W. Значение по умолчанию 0.0f. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_ENABLEADAPTIVETESSELLATION | Переменная Булева типа. Устанавливаем в TRUE для включения адаптивной тесселяции (adaptive tesselation). Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. Более подробно смотрим тему "Адаптивная тесселяция" в MSDN: Tessellation (Direct3D 9). |
D3DRS_TWOSIDEDSTENCILMODE | Переменная Булева типа. Устанавливаем в TRUE для включения двустороннего шаблонирования (two-sided stenciling). Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. При включении данного рендер-стейта другой рендер-стейт D3DRS_CULLMODE должен иметь значение D3DCULL_NONE. Если отсчёт вершин треугольника (triangle winding order) производится по часовой стрелке, то в этом случае используются рендер-стейты группы D3DRS_STENCIL. Если против часовой, то используются рендер-стейты группы D3DRS_CCW_STENCIL. Для проверки поддержки устройством двустороннего шаблонирования проверь, что члену StencilCaps структуры D3DCAPS9 присвоено значение D3DSTENCILCAPS_TWOSIDED. Более подробно смотрим описание флагов D3DSTENCILCAPS в MSDN. |
D3DRS_CCW_STENCILFAIL | Операция шаблонирования (stencil operation), которая выполняется при провале теста шаблонирования против часовой стрелки (CCW stencil test). Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_CCW_STENCILZFAIL | Операция шаблонирования (stencil operation), которая выполняется в том случае, когда тест шаблонирования против часовой стрелки (CCW stencil test) пройден успешно, а z-тест провален. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_CCW_STENCILPASS | Операция шаблонирования (stencil operation), которая выполняется в том случае, когда и тест шаблонирования против часовой стрелки (CCW stencil test) и z-тест пройдены успешно. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DSTENCILOP. Значение по умолчанию D3DSTENCILOP_KEEP. |
D3DRS_CCW_STENCILFUNC | Функция сравнения. Тест шаблонирования против часовой стрелки (CCW stencil test) считается пройденным, когда ((ref & mask) функция шаблонирования (stencil & mask)) возвращает TRUE. Значениями данного рендер-стейта являются члены другого энумеративного типа D3DCMPFUNC. Значение по умолчанию D3DCMP_ALWAYS. |
D3DRS_COLORWRITEENABLE1 | Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9. Значение по умолчанию 0x0000000f . |
D3DRS_COLORWRITEENABLE2 | Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9. Значение по умолчанию 0x0000000f . |
D3DRS_COLORWRITEENABLE3 | Дополнительные значения цвета функции ColorWriteEnable для объекта устройства. См. описание рендер-стейта D3DRS_COLORWRITEENABLE. Данная функция доступна, только если для объекта устройства установлен бит D3DPMISCCAPS_INDEPENDENTWRITEMASK в члене PrimitiveMiscCaps структуры D3DCAPS9. Значение по умолчанию 0x0000000f . |
D3DRS_BLENDFACTOR | Значение типа D3DCOLOR, используемое в качестве постоянного бленд-фактора (constant blend-factor) при альфа-смешивании (alpha blending). Данная функция доступна, только если для объекта устройства установлен бит D3DPBLENDCAPS_BLENDFACTOR в члене SrcBlendCaps структуры D3DCAPS9 или присвоено значение члену DestBlendCaps (там же). Более подробно смотрим описание энумеративного типа D3DRENDERSTATETYPE в MSDN. Значение по умолчанию 0xffffffff . |
D3DRS_SRGBWRITEENABLE | Активирует запись в цель рендеринга (render tarrget) данных корректирования гаммы под формат sRGB. Формат значения должен быть экспонирован интерфейсом D3DUSAGE_SRGBWRITE. Значение по умолчанию 0. |
D3DRS_DEPTHBIAS | Значение с плавающей точкой, которое используется для сравнения значений глубины/дальности прорисовки. Значение по умолчанию 0. Более подробно смотрим тему "Отклонение величины дальности/глубины" в MSDN: Depth Bias (Direct3D 9). |
D3DRS_SEPARATEALPHABLENDENABLE | Переменная Булева типа. Устанавливаем в TRUE для включения раздельного режима смешивания (separate blend mode) для альфа-канала. Значение FALSE отключает данную опцию. Значение по умолчанию FALSE. При установке в FALSE, факторы и операторы смешивания цели рендеринга, которые применяются к альфа-каналу, принудительно приводятся к тем же факторам и операторам, что определены для цвета. Данный рендер-стейт рекомендуется устанавливать в FALSE в реализациях, которые не устанавливают флаг D3DPMISCCAPS_SEPARATEALPHABLEND. Более подробно смотрим тему D3DPMISCCAPS в MSDN. |
D3DRS_SRCBLENDALPHA | Значение источника альфа-смешивания. Здесь указывается один из членов другого энумеративного типа D3DBLEND. Значение данного рендер-стейта игнорируется до тех пор, пока рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE не будет установлен в TRUE. Значение по умолчанию D3DBLEND_ONE. |
D3DRS_DESTBLENDALPHA | Значение получателя альфа-смешивания. Здесь указывается один из членов другого энумеративного типа D3DBLEND. Значение данного рендер-стейта игнорируется до тех пор, пока рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE не будет установлен в TRUE. Значение по умолчанию D3DBLEND_ONE. |
D3DRS_BLENDOPALPHA | Значение используется для выбора арифметической операции, применяемой к раздельному альфа-смешиванию (separate alpha blending). Причём только в том случае, когда рендер-стейт D3DRS_SEPARATEALPHABLENDENABLE установлен в TRUE. Значениями данного рендер-стейта являются члены другого энумеративного типа хhttps://docs.microsoft.com/en-us/windows/win32/direct3d9/d3dblendop|D3DBLENDOP]. Значение по умолчанию D3DBLENDOP_ADD. Если объект устройства не поддерживает рендер-стейт D3DPMISCCAPS_BLENDOP, то применяется значение D3DBLENDOP_ADD. Более подробно смотрим тему D3DPMISCCAPS в 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 .Последние изменения страницы Воскресенье 29 / Май, 2022 11:01:05 MSK
Последние комментарии wiki