Шаг 54 - Описание перечисляемого типа D3DRENDERSTATETYPE

Определяет тип отображения устройству:

typedef enum _D3DRENDERSTATETYPE {
	D3DRS_ZENABLE = 7,
	D3DRS_FILLMODE = 8,
	D3DRS_SHADEMODE = 9,
	D3DRS_LINEPATTERN = 10,
	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_ZVISIBLE = 30,
	D3DRS_FOGCOLOR = 34,
	D3DRS_FOGTABLEMODE = 35,
	D3DRS_FOGSTART = 36,
	D3DRS_FOGEND = 37,
	D3DRS_FOGDENSITY = 38,
	D3DRS_EDGEANTIALIAS = 40,
	D3DRS_ZBIAS = 47,
	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_SOFTWAREVERTEXPROCESSING = 153,
	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_PATCHSEGMENTS = 164,
	D3DRS_DEBUGMONITORTOKEN = 165,
	D3DRS_POINTSIZE_MAX = 166,
	D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
	D3DRS_COLORWRITEENABLE = 168,
	D3DRS_TWEENFACTOR = 170,
	D3DRS_BLENDOP = 171,    
	D3DRS_POSITIONORDER = 172,
	D3DRS_NORMALORDER = 173,

	D3DRS_FORCE_DWORD = 0x7fffffff
} D3DRENDERSTATETYPE;

Описание констант

D3DRS_ZENABLE - тип буфера глубины берется из перечисляемого типа D3DZBUFFERTYPE. Если Вы установите флажок D3DZB_TRUE, то это разрешит использовать z-буферизацию, если D3DZB_USEW, то разрешит использовать w-буферизацию и если D3DZB_FALSE - то отключает поддержку глубины буфера.

По умолчанию это значение установлено в состояние D3DZB_TRUE, если, конечно, до этого был создан трафарет буфера при помощи EnableAutoDepthStencil имеющий значение TRUE и установлен также формат из структуры D3DPRESENT_PARAMETERS. В противном случае устанавливается значение D3DZB_FALSE.

D3DRS_FILLMODE - использует перечисляемый тип D3DFILLMODE. По умолчанию он равен D3DFILL_SOLID.

D3DRS_SHADEMODE - использует перечисляемый тип D3DSHADEMODE. По умолчанию он равен D3DSHADE_GOURAUD.

D3DRS_CULLMODE - определяет способ отображения задней стороны треугольника. Можно установить при помощи параметров перечисяемого типа D3DCULL. По умолчанию он равен D3DCULL_CCW.

D3DRS_LIGHTING - значение TRUE включает свет в Direct3D, FALSE - наоборот выключает. По умолчанию значение равно TRUE. Только для вершин содержащих нормаль может правильно расcчитываться освещение. Вершины, у которых нет нормали по умолчанию 0 для всех вычислений освещения.

D3DRS_AMBIENT - подстветка света. Это значение использует тип D3DCOLOR. По умолчанию он равен 0.

Примечание

Для удобства Direct3D определяет константы D3DRENDERSTATE_WRAPBIAS, чтобы приложениям разрешить или запретить накладывать текстуру, которые применяют только целые числа (скорее всего используют одно из значений состояния устройства D3DRS_WRAPn). Добавьте значение D3DRENDERSTATE_WRAPBIAS к нулевому индексу координат текстур, чтобы вычислить значение D3DRS_WRAPn, которое соответствует индексу показанного в следующем примере:

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

Требования

Заголовки: объявить D3d8types.h.

Примеры

См. раздел Direct3D: "Шаг 13 - Вращаем разноцветный трехмерный треугольник", "Шаг 14 - Используем буфер глубины (Z-буфер)".


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 28.08.2002 (обновлено 05.09.2002)