Suchergebnisse
Suchergebnisse 1-6 von insgesamt 6.
Ich bin mir nicht sicher aber ist in diesem Code-Abschnitt nicht ein Fehler? Der durch "new float[16]" angeforderte Speicher wird doch nicht mehrfreigegeben, bzw. überhaupt verwendet, da der Zeiger Zwischen direkt auf die Matrix gesetzt wird. C-/C++-Quelltext 1 2 3 4 5 6 PHMAMatrix mat; mat = //was man halt will float *Zwischen=new float[16]; Zwischen=(float*)&MatrixTranspose(mat); // AB HIER ZEIGT Zwischen AUF DIE MATRIX D3DDev->SetVertexShaderConstantF(0, Zwischen, 4); delete [] Zwischen;
Also wenn die Funktion erst nach dem return der Main-Funktion aufgerufen wird, könnte es sein das sie im Destruktor eines Objekts aufgerufen wird, das beim Verlassen der Main-Funktion zerstört wird.
Wie schon gesagt, am besten nimmst du transformierte Vertices. Da kannst du dann direkt Bildschirmkoordinaten angeben und sparst dir die ganzen Matrizen.
Danke für die Hilfe. Jetzt hab ichs verstanden. :idea:
Hallo ich habe irgendwie ein Verständnisproblem bezüglich des Kreuzproduktes. Wenn ich z.B. das Kreuzprodukt aus XAchse und YAchse berechne kommt die ZAchse heraus. Wenn ich allerdings die Drei-Finger-Regel verwende (oder mir das Bild hier anschaue, http://de.wikipedia.org/wiki/Vektor#Kreuzprodukt), kommt heraus das das Kreuzprodukt aus XAchse und YAchse die negative ZAchse sein müsste. Ich hoffe jemand kann mir helfen.
Ist zwar nicht die einzige Möglichkeit, aber man kann 2D-Grafik mit transformierten Vertices machen. Falls du das nicht willst, brauchst du halt eine entsprechende Projektionsmatrix.