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

11

27.11.2005, 15:42

die Sache mit der Reihenfolge:
was in der Zeile

C-/C++-Quelltext

1
const DWORD VERTEX::dwFVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1

passiert, ist doch das folgende:
Man nehme das DWORD VERTEX::dwFVF (32bit) und schreibt da verodert (|) verschiedene Masken rein,im obigen Fall:

C-/C++-Quelltext

1
2
3
D3DFVF_XYZ = 0x00000002  
D3DFVF_DIFFUSE = 0x00000040  
D3DFVF_BLA = 0x00000100

das ergibt verodert 0x00000142, egal in welcher Reihenfolge. Sie ist nur so gewählt, damit sie konform zur Reihenfolge in der struct ist,
d.h. Nibble 0 stellt die erste Variable in der struct dar, Nibble 1 die zweite, Nibble 2 die dritte.
In welcher Reihenfolge die Masken in das DWORD reingeodert werden ist dabei völlig egal.
Die Reihenfolge spielt meiner Meinung nach nur in der Definition der struct für das Vertexformat eine Rolle:

C-/C++-Quelltext

1
2
3
4
5
6
7
struct VERTEX 
{ 
tbVector3    vPosition; 
DWORD      cColor; 
tbVector2    vTexture; 
static const DWORD dwFVF; 
};

so isses ok, und

C-/C++-Quelltext

1
2
3
4
5
6
7
struct VERTEX 
{ 
tbVector3    vPosition; 
tbVector2    vTexture; 
DWORD      cColor; 
static const DWORD dwFVF; 
};

so eben nicht.

Bitte korrigiert mich, wenn ich falsch liege...

mfg.matmaxx

dreaming in digital...living in realtime...thinking in binary...talking in IP...welcome to my world

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

12

27.11.2005, 16:14

matmaxxich stimme dir vollkommen zu...
ich dachte die frage nach der reihenfolge von fury wäre auf die struct bezogen gewesen.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

13

28.11.2005, 07:09

Vielen Dank!

14

01.12.2005, 19:40

Noch eine Frage dazu:

Es ist für mich kein Prob die koordinaten zu verschieben oder puslsieren zu lassen. Wie habt ihr die aber zum rotieren gebracht?

15

02.12.2005, 19:28

Zum Beispiel so (Ausschnitt aus der Render(...) Methode):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
tbMatrix    mTexRotation3d;         // matmaxx: 3d-Rotationsmatrix für die Textur

tbMatrix    mTexTranslation3d;      // 3d-Translationsmatrix für die Textur

tbMatrix    mTexWorld3d;            // 3d-Weldmatrix für die Textur

tbMatrix    mTexWorld2d;            // 2d-Weltmatrix für die Textur

float   fW;                     // output parameter w tbVector2TransformCoords


mTexRotation3d = tbMatrixRotationZ(TB_DEG_TO_RAD(sinf(g_fTime))/10.0f);
mTexTranslation3d = tbMatrixTranslation(tbVector3(g_fTime, 0.0f, 0.0f));
mTexWorld2d = tbMatrixToTex2DMatrix(mTexWorld3d);

g_aTriangleVertex[0].vTexture   = tbVector2TransformCoords(g_aTriangleVertex[0].vTexture,mTexWorld2d,&fW);
g_aTriangleVertex[1].vTexture   = tbVector2TransformCoords(g_aTriangleVertex[1].vTexture,mTexWorld2d,&fW);
g_aTriangleVertex[2].vTexture   = tbVector2TransformCoords(g_aTriangleVertex[2].vTexture,mTexWorld2d,&fW);


Fragen..?
Kritik..?

cu.matmaxx

dreaming in digital...living in realtime...thinking in binary...talking in IP...welcome to my world

16

03.12.2005, 20:27

Danke! Alles klar!

Ich kannte diese Funktion zum umwanden einer 3d in eien 2d Matrix nicht^^

Werbeanzeige