000
29.10.2006, 20:39 Uhr
~Monique
Gast
|
Ich hab irgendwie etwas Probleme mein Spotlight auf meinen Würfel leuchten zu lassen.
Dabei vermute ich mal, dass ich irgendwie mit den Koordinatensystem nicht ganz klar komme und deswegen am ziel vorbei leuchte. hier mal der code.
C++: |
BOOL SetLight() { D3DLIGHT9 pLight; memset(&pLight, 0, sizeof(D3DLIGHT9));
pLight.Type = D3DLIGHT_SPOT; pLight.Diffuse.r = 1.0f; pLight.Diffuse.g = 1.0f; pLight.Diffuse.b = 1.0f; pLight.Diffuse.a = 1.0f;
pLight.Ambient.r = 1.0f; pLight.Ambient.g = 0.3f; pLight.Ambient.b = 0.4f;
pLight.Range = 1000.f; pLight.Falloff = 1.0f;
pLight.Attenuation0 = 1.0f; pLight.Attenuation1 = 0.0f; pLight.Attenuation2 = 0.0f;
pLight.Theta = DEG_TO_RAD(30); pLight.Phi = DEG_TO_RAD(170);
D3DXVECTOR3 vecDir;
vecDir = D3DXVECTOR3(0.0f, 0.0f, 1.0f); D3DXVec3Normalize( (D3DXVECTOR3*)&pLight.Direction, &vecDir);
D3DXVECTOR3 vecPos;
vecPos = D3DXVECTOR3(0.0f, 0.0f, 0.0f); D3DXVec3Normalize( (D3DXVECTOR3*)&pLight.Position, &vecPos);
g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE); g_pD3DDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE);
g_pD3DDevice->SetLight(0, &pLight);
g_pD3DDevice->LightEnable(0, TRUE);
return TRUE; }
|
Meine Kamera bzw. Blinwinkel ist wie folgt gesetzt
C++: |
BOOL SetCamera() { D3DXMATRIX view;
D3DXVECTOR3 eye(0.0f, 0.0f, -6.5f); D3DXVECTOR3 lookAt(0.0f, 0.0f, 0.0f); D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMatrixLookAtLH(&view, &eye, &lookAt, &up);
g_pD3DDevice->SetTransform(D3DTS_VIEW, &view);
return TRUE;
}
BOOL SetPerspective() {
D3DXMATRIX Projection;
D3DXMatrixPerspectiveFovLH(&Projection, 1.0f, 1024/768, -6.0f, 0.0f);
// Set the projection. g_pD3DDevice->SetTransform(D3DTS_PROJECTION, &Projection); return TRUE; }
|
Sieht jemand einen Fehler? |