Metode IDirect3DDevice9::SetLight (d3d9helper.h)

Menetapkan sekumpulan properti pencahayaan untuk perangkat ini.

Sintaks

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

Parameter

[in] Index

Jenis: DWORD

Indeks berbasis nol dari kumpulan properti pencahayaan yang akan diatur. Jika sekumpulan properti pencahayaan ada di indeks ini, properti baru yang ditentukan dalam pLight akan ditimpa.

[in] unnamedParam2

Jenis: const D3DLIGHT9*

Arahkan ke struktur D3DLIGHT9 , yang berisi parameter pencahayaan yang akan diatur.

Mengembalikan nilai

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat D3DERR_INVALIDCALL.

Keterangan

Atur properti cahaya dengan menyiapkan struktur D3DLIGHT9 lalu memanggil metode IDirect3DDevice9::SetLight . Metode IDirect3DDevice9::SetLight menerima indeks di mana perangkat harus menempatkan set properti cahaya ke daftar internal properti cahayanya, dan alamat struktur D3DLIGHT9 yang disiapkan yang menentukan properti tersebut. Anda dapat memanggil IDirect3DDevice9::SetLight dengan informasi baru sesuai kebutuhan untuk memperbarui properti iluminasi cahaya.

Sistem mengalokasikan memori untuk mengakomodasi sekumpulan properti pencahayaan setiap kali Anda memanggil metode IDirect3DDevice9::SetLight dengan indeks yang belum pernah ditetapkan propertinya. Aplikasi dapat mengatur sejumlah lampu, hanya dengan subset lampu yang ditetapkan diaktifkan pada satu waktu. Periksa anggota MaxActiveLights dari struktur D3DCAPS9 saat Anda mengambil kemampuan perangkat untuk menentukan jumlah maksimum lampu aktif yang didukung oleh perangkat tersebut. Jika Anda tidak lagi membutuhkan cahaya, Anda dapat menonaktifkannya atau menimpanya dengan serangkaian properti cahaya baru.

Contoh berikut menyiapkan dan mengatur properti untuk titik-cahaya putih yang cahaya yang dipancarkan tidak akan mereda dari jarak jauh.


// 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

Aktifkan sumber cahaya dengan memanggil metode IDirect3DDevice9::LightEnable untuk perangkat.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d9helper.h (termasuk D3D9.h)
Pustaka D3D9.lib

Lihat juga

IDirect3DDevice9

IDirect3DDevice9::GetLight

IDirect3DDevice9::GetLightEnable

IDirect3DDevice9::LightEnable