Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.04.2010, 21:04

Rotation wird nicht richtig angezeigt

Ein Guten Abend an alle,

jetzt wo ich das mit der Zeit hinbekomme habe, hab ich wieder ein neues Problem, nämlich wenn ich um die Y-Achse oder die X-Achse rotieren will, die Z-Achse funktioniert, wird das Dreieck, Viereck etc. nicht richtig angezeigt... Ich hab mir dann nochmal die Funktionen angeschaut ob ein Zahlenfehler oder sowas drinne ist, hab aber jetzt nichts gefunden

Hier die Funktion für die Rotation um die Y-Achse

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
inline CMatrix4x4 RotationY(const float Y)
 {
  float fSin = sinf(Y);
  float fCos = cosf(Y);
  CMatrix4x4 YRotation;
                        YRotation.m12 = 0.0f;                       YRotation.m14 = 0.0f;
  YRotation.m21 = 0.0f; YRotation.m22 = 1.0f; YRotation.m23 = 0.0f; YRotation.m24 = 0.0f;
                        YRotation.m32 = 0.0f;                       YRotation.m34 = 0.0f;
     YRotation.m41 = 0.0f; YRotation.m42 = 0.0f; YRotation.m43 = 0.0f; YRotation.m44 = 1.0f;
  YRotation.m11 = fCos;
  YRotation.m31 = fSin;
  YRotation.m13 = -fSin;
  YRotation.m33 = fCos;
  return YRotation;
 }


Hier nochmal die Bilder der Dreiecke:

http://img64.imageshack.us/gal.php?g=dreieck3.png

Vielen Dank im voraus

Mfg Male

2

22.04.2010, 21:09

Warum machst du nicht eine Funktion namens identity?
Also in der Funktion sieht eigentlich alles soweit richtig aus, deshalb denke ich mal, dass du bei der Verwendung einen Fehler machst. Kannst du mal die Stelle zeigen?
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

3

22.04.2010, 21:22

Eine Funktion für die Identitätsmatrix hab ich ^^

Hier ist die Renderfunktion

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void Render() 
{ 
     Math::CMatrix4x4 mRotation; 
     Math::CMatrix4x4 mTranslation; 
     Math::CMatrix4x4 mWorld;

    mRotation = Math::RotationY(g_fTime); 
    mTranslation = Math::Translation(Math::CVector3(0.0f, 0.0f, 2.0f)); // Die Z-Achse um 2 erhöhen 
    mWorld = mRotation * mTranslation; // Rotation und Translation miteindaner multiplizieren 

    D3DMATRIX m; 
    m = mWorld.GetD3DMatrix(); // Die Klasse CMatrix4x4 in ein D3DMATRIX umwandeln 
    pD3DDevice->SetTransform(D3DTS_WORLD, &m); // Worldmatrix setzen 

    pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); 
    pD3DDevice->BeginScene(); 

    pD3DDevice->SetStreamSource(0, vBuffer, 0, sizeof(Vertex)); 
    pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 3); 

    pD3DDevice->EndScene(); 
    pD3DDevice->Present(NULL, NULL, NULL, NULL); 
}

4

23.04.2010, 00:00

Bei D3DPT_TRIANGLELIST musst du bei PrimitiveCount "AnzahlVertices/3" angeben. Da du nur ein Dreieck rendern willst, darf da also im Grunde nur 1 stehen (3/3)
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

5

23.04.2010, 17:27

Vielen Danf für die Antworten... Ich weiß nicht warum es jetzt aufeinmal funktioniert, aber ich hab nochmal die Operatorenüberladung für die Matrizen neu gemacht, um auszuschließen das da irgentwo ein Fehler ist

Zitat

Bei D3DPT_TRIANGLELIST musst du bei PrimitiveCount "AnzahlVertices/3" angeben. Da du nur ein Dreieck rendern willst, darf da also im Grunde nur 1 stehen (3/3)

Ist schon richtig, weil ich ein Viereck aus 2 Dreiecken und ein Dreieck auf ein den Viereck render ^^



Aber wie gesagt es funktioniert auf einmal, keine Ahnung warum es vorher nicht funktioniert hat ?(

Werbeanzeige