[c++/DX] SetTexture

kickerxy123

Erfahrenes Mitglied
Hallo!

Ich verwende: DirectX9.0C Win XP SP3 Devarian cpp mit MinGW.

Mein Problem besteht in der Funktion SetTexture. Mittels ihr kann ja ein Modell (in meinem Fall ein einfaches Dreieck) mit einer Textur, die ich vorher geladen habe, versehen werden. Diese Funktion wird auf ein gültiges PDIRECT3DDEVICE9 angewendet, also:

Code:
PDIRECT3DDEVICE9 pd3d;
//initialisierung
pd3d->setTexture(stage,textur);
//mit stage = 0, da kein multitexturing

Mein Problem ist nun, wie kann ich mehreren Modellen (Dreiecken) _unterschiedliche_ Texturen geben. Ich will also kein Multitexturing o.ä.
mir fehlt irgendwie ein Handle auf die Dreiecke auf das ich das "setTexture" anwenden könnte. Denn wenn ich pd3d mit einer Texture setze, dann bekommen _alle_ Dreiecke die geladene Textur.
Frage: Wie kann ich das ändern? (ich hoffe doch stark, dass ich nicht für jede Textur ein eigenes PDIRECT3DDEVICE9 anlegen muss?:rolleyes:)



Ich hoffe ich habe mich klar genug ausgedrückt und schon einmal vielen Dank für Antworten,

kickerxy123
 
Hallo kickerxy123,

wenn du die Fixed Function Pipeline verwendest, dann musst folgendermaßen vorgehen:
  • Textur 1 setzen
  • Alle Dreiecke zeichnen, die Textur 1 bekommen sollen
  • Textur 2 setzen
  • Alle Dreiecke zeichnen, die Textur 2 bekommen sollen
  • ...
  • Textur n setzen
  • Alle Dreiecke zeichnen, die Textur n bekommen sollen
Alternativ dazu kannst du auch mehrere Texturen in einen Texturatlas packen, musst dann aber natürlich die Texturkoordinaten entsprechend anpassen.

Bei der programmierbaren Pipeline wäre das kein großes Problem, da du dort ja direkt auf die Sampler zugreifen kannst.

Grüße, Matthias
 
Hallo,

wollte noch ergänzen das man alle Dreiecke der selben Textur hintereinander halten sollte um sie mit einem Draw-Call zu zeichnen. Andernfalls schlägt das ganze sehr auf die Geschwindigkeit.

Gruß
Anfänger
 
Vielen Dank! Im Grunde ist es ja recht simpel, nur manchmal hat man ein Brett vorm Kopf ;) Aber jetzt geht es, danke auch für die Ergänzung.

So far..
kickerxy123
 
Zurück