Compartilhar via


Método IDirect3DDevice9::SetLight (d3d9helper.h)

Atribui um conjunto de propriedades de iluminação para este dispositivo.

Sintaxe

HRESULT SetLight(
  [in] DWORD           Index,
  [in] const D3DLIGHT9 *unnamedParam2
);

Parâmetros

[in] Index

Tipo: DWORD

Índice baseado em zero do conjunto de propriedades de iluminação a ser definido. Se houver um conjunto de propriedades de iluminação nesse índice, ele será substituído pelas novas propriedades especificadas no pLight.

[in] unnamedParam2

Tipo: const D3DLIGHT9*

Ponteiro para uma estrutura D3DLIGHT9 , que contém os parâmetros de iluminação a serem definidos.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser D3DERR_INVALIDCALL.

Comentários

Defina propriedades leves preparando uma estrutura D3DLIGHT9 e chamando o método IDirect3DDevice9::SetLight . O método IDirect3DDevice9::SetLight aceita o índice no qual o dispositivo deve colocar o conjunto de propriedades de luz em sua lista interna de propriedades leves e o endereço de uma estrutura D3DLIGHT9 preparada que define essas propriedades. Você pode chamar IDirect3DDevice9::SetLight com novas informações conforme necessário para atualizar as propriedades de iluminação da luz.

O sistema aloca memória para acomodar um conjunto de propriedades de iluminação sempre que você chama o método IDirect3DDevice9::SetLight com um índice que nunca foi atribuído a propriedades. Os aplicativos podem definir várias luzes, com apenas um subconjunto das luzes atribuídas habilitadas por vez. Verifique o membro MaxActiveLights da estrutura D3DCAPS9 ao recuperar recursos do dispositivo para determinar o número máximo de luzes ativas com suporte nesse dispositivo. Se você não precisar mais de uma luz, poderá desabilitá-la ou substituí-la por um novo conjunto de propriedades de luz.

O exemplo a seguir prepara e define propriedades para uma luz de ponto branca cuja luz emitida não atenuará a distância.


// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface.
D3DLIGHT9 d3dLight;
HRESULT   hr;
    
// Initialize the structure.
ZeroMemory(&d3dLight, sizeof(d3dLight));
    
// Set up a white point light.
d3dLight.Type = D3DLIGHT_POINT;
d3dLight.Diffuse.r  = 1.0f;
d3dLight.Diffuse.g  = 1.0f;
d3dLight.Diffuse.b  = 1.0f;
d3dLight.Ambient.r  = 1.0f;
d3dLight.Ambient.g  = 1.0f;
d3dLight.Ambient.b  = 1.0f;
d3dLight.Specular.r = 1.0f;
d3dLight.Specular.g = 1.0f;
d3dLight.Specular.b = 1.0f;
    
// Position it high in the scene and behind the user.
// Remember, these coordinates are in world space, so
// the user could be anywhere in world space, too. 
// For the purposes of this example, assume the user
// is at the origin of world space.
d3dLight.Position.x = 0.0f;
d3dLight.Position.y = 1000.0f;
d3dLight.Position.z = -100.0f;
    
// Don't attenuate.
d3dLight.Attenuation0 = 1.0f; 
d3dLight.Range        = 1000.0f;
    
// Set the property information for the first light.
hr = d3dDevice->SetLight(0, &d3dLight);
if (SUCCEEDED(hr))
    // Handle Success
else
    // Handle failure

Habilite uma fonte de luz chamando o método IDirect3DDevice9::LightEnable para o dispositivo.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d9helper.h (inclua D3D9.h)
Biblioteca D3D9.lib

Confira também

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable