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

06.04.2007, 14:51

X Meshes & Multitexturing

Ich bin gerade beim Multitexturing Kapitel dran. Als Aufgabe steht dort ich soll mir ein Beispiel aussuchen wo ich nun noch eine zweite Texturschicht auf ein Objekt hinzufügen soll und dann die erste Texturschicht sich verschieben und die zweite sich drehen soll.

Das ist ja eigentlich kein Problem nur sind die Objekte (Kugeln, Ich nehme des Beleuchtungsbeispiel) nicht mit einer Vertexstruktur konstruiert sondern werden aus einer X Datei geladen. Nur wo sind da die verschiedenen Texturkoordinaten für die verschiedenen Schichten gespeichert? Ich nehme an in der X Datei sind nur für eine Schicht Texturkoordinaten gespeichert, oder? Wie kann ich aber jetzt zwei Texturschichten unabhängig voneinander transformieren bzw. wo speichern sich die Koordinaten für die zweite Schicht hin? Mir ist klar, dass ich folgendes machen muss nur ich weiß nicht wie das für X Dateien funktioniert:

C-/C++-Quelltext

1
2
g_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
g_pD3DDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1);

2

06.04.2007, 15:04

hm weiß jetzt leider nicht, wie das bei den x.files ist, aber schonma folgendes probiert?


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
// preinitialized Texture1

// preinitialized Texture2

// begin drawing the ball

ID3DXDevice9 SetTexture(Texture1); // verlangt bischen andere parameter, abr hock gerade nicht zu hause und weiß es ned auswendig);

ID3DXDevice9 SetTextureStage(0); // gibt jedenfalls ne funktion, wo du festlegst, in welcher ebene die textur sein soll

// set matrices

ID3DXDevice9 SetTexture(Texture2); // verlangt bischen andere parameter, abr hock gerade nicht zu hause und weiß es ned auswendig);

ID3DXDevice9 SetTextureStage(1); // gibt jedenfalls ne funktion, wo du festlegst, in welcher ebene die textur sein soll

// set matrices

// draw x.file sphere


falls du das oben gemeint hast sry:P

3

06.04.2007, 15:25

Ja das weiß ich.

Es geht darum, dass ich nicht weiß woher die zweite Schicht ihre Koordinaten nimmt, wenn ich

g_pD3DDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1);

schreibe. Ich kann ja, da ich keine Vertexstruktur nicht selber mehrere 2D Vektoren für die Texel anlegen.

Edit: Ich habe nochmal drüber nachgedacht und bin zu dem Schluss gekommen, dass beide Texturschichten die gleichen Texel verwenden können. Ich kann ja trotzdem für die verschiedenen Schichten verschiedene Transformationsmatrizen einsetzen. Damit ist das Problem gelöst :idea:

Werbeanzeige