[DX9,C++] Bounding Box zeichnen(gelöst)

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Droven
Beiträge: 25
Registriert: 05.03.2009, 08:48
Echter Name: David Lorenz
Wohnort: Dresden

[DX9,C++] Bounding Box zeichnen(gelöst)

Beitrag von Droven »

Hi Community,

Für einen Leveleditor benötige ich, dass Linien einer Bounding Box um den Mesh gezeichnet werden, um den Benutzer die Sellektierung des Objektes zu veranschaulichen.
Mein Versuch eine Linie mit dem ID3DXLine-Interface zu zeichnen schlug fehl - keine Linien zu sehen.
Der Code:
Init:

Code: Alles auswählen

			//vertexlisten für linie laden
			//Linke, untere, vordere ecke zu rechter unteren vorderen ecke
			m_LDcToRDc[0] = m_pMin;
			m_LDcToRDc[1] = VECTOR3(m_pMax.x, m_pMin.y, m_pMin.z);
                       //usw...
			//line props
			m_pLine->SetWidth(10.0f);
			m_pLine->SetPattern(1);
Render:

Code: Alles auswählen

				//Bounding box zeichnen
				g_graphdevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
				m_pLine->Begin();
				m_pLine->DrawTransform(m_LDcToRDc,2, &maWorld, D3DCOLOR_ARGB(255,255,0,0));
				m_pLine->End();
Ich habe nicht viel Erfahrung mit dem Zeichnen von Linien und muss gestehen, dass ich sie hier zum ersten mal benötige. Klar lässt sich das Problem auch mit Line Stripes per Hand über DrawPrimitiveUp oder so umsetzen, doch wenn es schon ein Interface dafür gibt, warum dies nicht nutzen. Erkennt jemand den Fehler, liegt es vllt. am Vertexformat?
Ich danke im voraus!

EDIT: Mit dem Debugger habe ich nachgeprüft, ob alle Parameter der DrawTransform-Methode stimmen- Dies ist der Fall.
Zurück gibt die Methode 0 also D3D_OK.
Irgendwie zeigt das Codelisting den 3.Pramater amp;maWorld an, im Code steht dafür nat. nur das Referenz-Zeichen


Mfg David
Zuletzt geändert von Droven am 18.05.2009, 12:13, insgesamt 4-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Krishty »

Hier stand Müll, löschen pls :(
Zuletzt geändert von Krishty am 13.05.2009, 14:47, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Droven
Beiträge: 25
Registriert: 05.03.2009, 08:48
Echter Name: David Lorenz
Wohnort: Dresden

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Droven »

Wieso müll?
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von dowhilefor »

ich bin mir jetzt nicht mehr ganz so sicher, aber bedeutet D3DFVF_XYZRHW nicht das die Punkte schon transformiert und projeziert sind? Sie also in Screenspace angegeben werden?
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Krishty »

Droven hat geschrieben:Wieso müll?
Mein Beitrag, nicht deiner :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Droven
Beiträge: 25
Registriert: 05.03.2009, 08:48
Echter Name: David Lorenz
Wohnort: Dresden

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Droven »

@ Krishty
Achso, ok;).

Mit D3DFVF_XYZ habe ich es auch schon probiert, funktioniert auch nicht. Wie gesagt, ich habe in der Richtung noch nicht so viel gemacht.

MfG Droven
Dirk Schulz
Establishment
Beiträge: 130
Registriert: 01.03.2009, 14:21
Alter Benutzername: frittentuete

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Dirk Schulz »

Hi,

ich hatte das Problem auch schon, nutze allerdings DrawPrimitiveUp, weiß nicht ob es daher mit deinem vergleichbar ist.

Bei mir hat es geholfen vor dem zeichnen per D3DDevice->SetRenderState(D3DRS_LIGHTING, false) das Licht zu deaktivieren, dann hat er die Linien angezeigt.

Dirk Schulz
Droven
Beiträge: 25
Registriert: 05.03.2009, 08:48
Echter Name: David Lorenz
Wohnort: Dresden

Re: [DX9,C++] Bounding Box zeichnen

Beitrag von Droven »

Danke für die Antworten.

Also bei mir funktioniert es nicht das Licht zu deaktivieren.
Ich werden es morgen mal mit der DrawPrimitiveUP-Variante probiern und Bescheid geben.

MfG David
Droven
Beiträge: 25
Registriert: 05.03.2009, 08:48
Echter Name: David Lorenz
Wohnort: Dresden

Re: [DX9,C++] Bounding Box zeichnen(gelöst)

Beitrag von Droven »

Hi.

Habe das ganze Problem jetzt mit DrawPrimitiveUP gelöst. Die Linien werden angezeigt und man sieht die Bounding Box.
Danke für eure Hilfe!

MfG Droven
Antworten