JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ID3DXSprite Frage
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Verwendet ihr ID3DSprite Klasse?
Ja, weil sehr schnell, bewährt und funktional
0%
 0%  [ 0 ]
Ja, weil selbst machen zu schwer/zeitaufwändig
7%
 7%  [ 1 ]
Nein, weil zu langsam/zu wenig Funktionen
46%
 46%  [ 6 ]
Nein, weil ich es einfach selber umsetzen wollte
46%
 46%  [ 6 ]
Stimmen insgesamt : 13

Autor Nachricht
Tiberius
Mini JLI'ler



Anmeldedatum: 17.05.2006
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 05.06.2006, 23:31    Titel: Antworten mit Zitat

tja, ich hab mein Glück jetzt erstmal mit den guten d3dx sprites versucht und bereue es langsam sogar... war zwar anfang alles toll und finde auch die performance gut, aber...
wie rotiere ich die? Wenn ich es mit
CPP:
D3DXMatrixRotationZ ( &l_oRotMatrix, 0.5f );
m_pSprite->SetTransform( &l_oRotMatrix );

versuche, verschwinden die Sprites... ich kriege sie zwar wieder hingerückt, wenn ich auch noch eine translations matrix dazu mache, aber eigentlich ist die ja shcon im draw aufruf von den Sprites mit drin, oder warum gibt man da eine Position an?
Und mein zweites problem ist, ich hab eigenltich nur ein sprite objekt was alle texturen zeichnet, aber das ist fürs rotieren natürlich auch wieder doof, weil dann alle gedreht werden und nicht nur eins... wenn ich jedoch mehre sprite objekte habe, kriege ich die nicht in der richtigen reihenfolge gezeichnet, weil ich dann nicht weiß wann ich flushen soll und ich nicht nach jedem einzelnen sprite flushen will...
Hilfe wäre echt seehr klasse, sowohl ich etwas unter zeitdruck bin (ist eine teamarbeit) und ich daher ungerne alles nochmal von vorne (ohne d3dx sprites) machen will...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.06.2006, 00:58    Titel: Antworten mit Zitat

also, die worldmatrix musst du immer wieder neu setzen. Zuerst kommen bei DX wie auch in der Mathematik die Operationen im lokalen Raum, nämich:

Skalierung und Rotation

Dann, nachdem du dein Objekt in seinem eigenen, lokalen Koordinatensystem transformiert hast, musst du es verschieben, also die Translation. Da du Skalierung und Rotation vor Translation machst, sind die lokalen Achsen gleich der globalen Achsen, d.h. es ist im Grunde keine Transformation um die lokalen Achsen sondern um die globalen, wo sich den Sprite im Ursprung (0,0,0) befindet. Nachdem du es im Ursprung transformiert hast, musst du es von da aus an seine absolute Position im Worldspace verschieben. Kleines PseudoBeispiel nach der grauen Theorie:
CPP:
matScale = scale(...); // Skalieren, im Ursprung
matRot = rotate(...); // Rotieren, im Ursprung
matTrans = translate(...); // nach allem, an absolute Pos. verschieben

// alle Matrizen in der Reihenfolge, wie sie uaf das Obj. angewendet
// werden sollen, miteinander multiplizieren
worldMatrix = matScale * matRot * matTrans;
// und für das nächste Obj. als Welttransformationsmatrix setzen
sprite->SetTransform(D3DTS_WORLD, &worldMatrix);


btw: würdest du die Translationsmatrix vorher in die Multiplikation einbauen, würden sich die Sprites um die globalen Achsen an ihrer absoluten Position drehen, was norm. unerwünscht ist. Aber auch hier gibt es ausnahmen... Rolling Eyes

Gruß DXer Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 06.06.2006, 09:10    Titel: Antworten mit Zitat

DirectXer hat es soweit ganz gut auf den Punkt gebracht, ich würde dir unbedingt empfehlen, dich in Ruhe darein zu fuchsen, weil es ganz schön wichtig ist, verstanden zu haben, was da eigentlich genau passiert, gerade wenn du ohne D3DX oder andere Hilfs-Libraries coden willst. Am besten du "spielst" mal ein bisschen mit den Matrizen herum.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Tiberius
Mini JLI'ler



Anmeldedatum: 17.05.2006
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 13.06.2006, 20:52    Titel: Antworten mit Zitat

sorry, für die späte antwort, danke erstmal für eure replies. Habs jetzt hinbekommen, lasse den Positions vector bei sprite.draw() einfach weg... der zerhaut sonst alles und setzt die translation selber mit hilfe von matrizen.
Bin jetzt schon beim nächsten schritt schrift mit dem d3dxfont-teilchen zu erstellen, hänge hier gerade ein bisschen bei der überlegung wie ich die texte die ausgegeben werden sollen, speichern soll (ich kriege sie ja an irgendeiner stelle im programm und rendere sie erst wenn text.render aufgerufen wird. Ich will eigentlich dann nciht jedesmal mit new ein neues Textarray erzeugen, weil ich versuche so wenig wie möglich news zur runtime auszuführen... versuche daher das ganze mit einem vorher festgelegten array an char[128] zu lösen... allerdings komme ich zur zeit noch mit dem ganzen einfügen und löschen von beliebigen strings etwas durcheinander... Ich hoffe mal ich kriegs hin. ansonsten bin ich wieder mal für tipps sehr dankbar (auch wenn ich befürchte dass der thread titel bald nciht mehr passen könnte)
Naja, danke auf jedenfall nochmal =)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 13.06.2006, 21:00    Titel: Antworten mit Zitat

'std::string' heißt die Zauberlösung. 8)

CPP:
#include <string>
...
std::string str = "blablablubb";
str += "lalalalu";
str[2] = 'a';
char* c_string = str.c_str();


Wie du siehst, sehr flexibel, sehr mächtig, sehr toll das Teil, sollte eigentlich nur benutzt werden, besitzt auch noch eine ganze Menge mehr Methoden und Operatoren, am besten mal in eine Referenz schauen, sollte man auf jeden Fall beherrschen. Vollen Unicode gibt's netterweise auch gleich frei Haus mittels 'std::basic_string<wchar_t>' oder alternativ dem zugehörigem typedef: 'std::wstring'.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum