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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk