Введение в программирование трехмерных игр с DX9

       

Разрешение работы с несколькими текстурами


18.1.1. Разрешение работы с несколькими текстурами

Вспомните, что текстуры устанавливаются с помощью метода IDirect3DDevice9::SetTexture, а режимы выборки (sampler state) устанавливаются с помощью метода IDirect3DDevice9::SetSamplerState, чьи прототипы выглядят так:

HRESULT IDirect3DDevice9::SetTexture( DWORD Stage, // индекс этапа текстурирования IDirect3DBaseTexture9 *pTexture );

HRESULT IDirect3DDevice9::SetSamplerState( DWORD Sampler, // индекс этапа выборки D3DSAMPLERSTATETYPE Type, DWORD Value );

ПРИМЕЧАНИЕ

Этап выборки с индексом i связвн с i-ым этапом текстурирования. То есть i-ый этап выборки задает режимы выборки для i-ой установленной текстуры.

Индекс этапа текстурирования/выборки идентифицирует этап текстурирования/выборки для которого мы устанавливаем текстуру или режим выборки. Следовательно, мы можем разрешить использование нескольких текстур и установить для каждой из них требуемые режимы выборки, указывая различные индексы этапов. Ранее в этой книге мы всегда указывали индекс 0, задавая первый этап, поскольку использовали только одну текстуру одновременно. Если, например, нам надо разрешить использование трех текстур, мы используем этапы 0, 1 и 2, как показано ниже:

// Устанавливаем первую текстуру и режимы выборки для нее Device->SetTexture( 0, Tex1); Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

// Устанавливаем вторую текстуру и режимы выборки для нее Device->SetTexture( 1, Tex2); Device->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(1, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

// Устанавливаем третью текстуру и режимы выборки для нее Device->SetTexture( 2, Tex3); Device->SetSamplerState(2, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(2, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(2, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

Данный код разрешает использование трех текстур, Tex1, Tex2 и Tex3, и устанавливает режимы фильтрации для каждой текстуры.



Содержание раздела