Objektauswahl im Leveleditor, Problem
-
Surkevin schrieb:
Wenn ich Stefan Zerbts Methode mit GetClientRect Daten mache, funktioniert alles, JUHU! Aber wieso kapiert D3DXVec3Unproject das nicht, obwohl ich alles mit 640*480 initalisiere?
DANKE,
Gruß,
KevinDu initialisierst die Größe des Fensters mit 640 x 480, dann musst
du aber noch die Größe des Titelleiste und des Randes abziehen, dann hast
du die Größe des Zeichenbereiches.Also solltest du das an folgender Stelle so machen:
D3DSURFACE_DESC ddsd; memset(&ddsd,0,sizeof(ddsd)); IDirect3DSurface9 *lpDDS; MainObjects.dd_obj.lpD3DDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&lpDDS); lpDDS->GetDesc(&ddsd); // Compute the vector of the pick ray in screen space D3DXVECTOR3 v, vPickRayDir, vPickRayOrig; v.x = ( ( ( 2.0f * ptCursor.x ) / ddsd.Width ) - 1 ) / matProj._11; v.y = -( ( ( 2.0f * ptCursor.y ) / ddsd.Height ) - 1) / matProj._22; v.z = 1.0f; ...
Wenn ich das Programm bei mir compiliere funktioniert es auch.
(Die exe von dir hat bei mir eine Accessviolation verursacht)Viele Grüße
Fischi
-
Hatte Stefan nicht von Anfang an gesagt, die Rechnung wäre nicht der Fehler...
Bye, TGGC \-/
-
Hallo,
Ja die Berechnung funktioniert ja mit GetClientRect-DatenAber wieso funktioniert die D3DXVec3Unproject-Funktion nicht korrekt, wenn ich mich bewege?
Cool, dass die Anwendung bei euch Accessviolations verursacht *fg*
Gruß,
Kevin