Compartir a través de


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

Asigna un conjunto de propiedades de iluminación para este dispositivo.

Sintaxis

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

Parámetros

[in] Index

Tipo: DWORD

Índice de base cero del conjunto de propiedades de iluminación que se va a establecer. Si existe un conjunto de propiedades de iluminación en este índice, se sobrescribe mediante las nuevas propiedades especificadas en pLight.

[in] unnamedParam2

Tipo: const D3DLIGHT9*

Puntero a una estructura de D3DLIGHT9 , que contiene los parámetros de iluminación que se van a establecer.

Valor devuelto

Tipo: HRESULT

Si el método se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto se puede D3DERR_INVALIDCALL.

Comentarios

Establezca las propiedades de luz preparando una estructura de D3DLIGHT9 y, a continuación, llamando al método IDirect3DDevice9::SetLight . El método IDirect3DDevice9::SetLight acepta el índice en el que el dispositivo debe colocar el conjunto de propiedades de luz en su lista interna de propiedades de luz y la dirección de una estructura D3DLIGHT9 preparada que define esas propiedades. Puedes llamar a IDirect3DDevice9::SetLight con nueva información según sea necesario para actualizar las propiedades de iluminación de la luz.

El sistema asigna memoria para alojar un conjunto de propiedades de iluminación cada vez que se llama al método IDirect3DDevice9::SetLight con un índice que nunca se ha asignado propiedades. Las aplicaciones pueden establecer una serie de luces, con solo un subconjunto de las luces asignadas habilitadas a la vez. Compruebe el miembro MaxActiveLights de la estructura de D3DCAPS9 al recuperar las funcionalidades del dispositivo para determinar el número máximo de luces activas compatibles con ese dispositivo. Si ya no necesita una luz, puede deshabilitarla o sobrescribirla con un nuevo conjunto de propiedades de luz.

En el ejemplo siguiente se preparan y establecen propiedades para una luz de punto blanco cuya luz emitida no se atenuará a lo largo de la distancia.


// 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 una fuente de luz llamando al método IDirect3DDevice9::LightEnable para el dispositivo.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable