JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=cdd4eb6e518d755887e9e178ccfbb8fbMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

3D-Abbildungen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 09.12.2007, 05:02    Titel: 3D-Abbildungen Antworten mit Zitat

Ich will mein Programm optimieren. Ich verwende Funktionen aus der D3DX-Utility-Library.

Ich las (Scherfgen), dass CPU's, die SSE oder 3DNow haben, mehrere Fließkommaberechnungen parallel ausführen können.

Verwendet die D3DX-Utility-Libarary eigentlich diese Feature? Wenn ja, müsste ich ebenfalls diese Technologien verwenden um ein Geschwindigkeitsvorteil zu erreichen. Ansonsten wüde ich mit meinen "Optimierungen" nichts erreichen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.12.2007, 10:51    Titel: Antworten mit Zitat

Ja die D3DX Library ist hoch optimiert was das angeht. Irgendwo im Forum hier müsste es auch einen grossen Diskussionsthread dazu geben, einfach mal nach D3DX suchen.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 09.12.2007, 10:56    Titel: Antworten mit Zitat

das stimmt, zumindest die meisten Komponenten sind alle auf die unterstützen cpu features ausgelegt (FPU MMX SSE4 etc.). ID3DXFont dagegen ist seeeeeehhhhhhr langsam, da es 1. keine optimierten Funktionen nutzt und 2. auch noch GDI bei jedem Schriftbild aufruft.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.12.2007, 11:26    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
das stimmt, zumindest die meisten Komponenten sind alle auf die unterstützen cpu features ausgelegt (FPU MMX SSE4 etc.). ID3DXFont dagegen ist seeeeeehhhhhhr langsam, da es 1. keine optimierten Funktionen nutzt und 2. auch noch GDI bei jedem Schriftbild aufruft.

Gruß DXer


Mittlerweile ist D3dXFont recht schnell, es wird eine Glyphentextur mit den ganzen Schriftzeichen einmal erstellt und diese wird dann zum Rendern benutzt, die Glyphentextur mag zwar mit GDI erstellt werden aber irgendwoher m,uss das ja kommen (1x). Das Rendern der Schriften kann man batchen indem man ein eigenes D3DXSprite Objekt benutzt und Shader etc sind damit auch möglich, ebenso kann man die Schriften im 3D Raum positionieren indem man die entsprechenden Matritzen übergibt.

Früher war das aber wirklich sehr langsam.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 09.12.2007, 11:41    Titel: Antworten mit Zitat

Fallen hat Folgendes geschrieben:
DirectXer hat Folgendes geschrieben:
das stimmt, zumindest die meisten Komponenten sind alle auf die unterstützen cpu features ausgelegt (FPU MMX SSE4 etc.). ID3DXFont dagegen ist seeeeeehhhhhhr langsam, da es 1. keine optimierten Funktionen nutzt und 2. auch noch GDI bei jedem Schriftbild aufruft.

Gruß DXer


Mittlerweile ist D3dXFont recht schnell, es wird eine Glyphentextur mit den ganzen Schriftzeichen einmal erstellt und diese wird dann zum Rendern benutzt, die Glyphentextur mag zwar mit GDI erstellt werden aber irgendwoher m,uss das ja kommen (1x). Das Rendern der Schriften kann man batchen indem man ein eigenes D3DXSprite Objekt benutzt und Shader etc sind damit auch möglich, ebenso kann man die Schriften im 3D Raum positionieren indem man die entsprechenden Matritzen übergibt.

Früher war das aber wirklich sehr langsam.

ahh dann haben die das wohl geändert Smile gut zu wissen Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 09.12.2007, 15:20    Titel: Antworten mit Zitat

Auf folgender Seite:

http://www.spieleprogrammierer.de

findet man im 'Hauptmenü' unter 'Artikel' einen Beitrag zu 3DNow!.

Ab welcher Version erkennen Microsoft-Compiler, dass optimiert werden kann?

Schließlich ist 3DNow! auch nur ein Verfahren (welches nicht jeder Prozessor hat und auch nicht das schnellste ist) von mehreren zur Geschwindigkeitsoptimierung.

Gibt es hier jemanden, der solch tiefgehenden Optimierungen nutzt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 09.12.2007, 21:39    Titel: Antworten mit Zitat

ich nutze ziemlich stark solche optimierungen, da ich einen Hardware/Software-Renderer schreibe(man kann zwischen beiden wählen). Dabei braucht man jeden CPU cycle den man kriegen kann. Zum Testen welche features auf der jeweiligen CPU vorhanden sind, kannst du den Befehl cpuid mit inline assembler nutzen. Um nach einer FPU, SSE und SSE2 zu fragen, könnte man z.B. so etwas schreiben (auf manchen compilert gibt es auch cpuid-intrinsics die einem einen Teil dieser Arbeit abnehmen):
CPP:
        int tFPU, tSSE, tSSE2;
   
   __asm
   {
      pushad
      mov       eax, 1
      cpuid
      mov       eax,    edx             
      and        eax,     0x0000001      ;// id für fpu
      mov       tFPU,    eax
      mov       eax,    edx
      and        eax,     0x2000000        ;// id für intel sse
      mov     tSSE,    eax
      mov       eax,    edx
      and      eax,     0x4000000        ;// id für intel sse2
      mov       tSSE2,  eax
      popad
   }

   bool FPU   = tFPU  != 0;
   bool SSE   = tSSE  != 0;
   bool SSE2 = tSSE2 != 0;


Du kannst mich ja mal bei ICQ anschreiben, wenn du Hilfe dazu brauchst.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 10.12.2007, 11:54    Titel: Antworten mit Zitat

Danke für die Antworten!

Im Moment fasse ich lediglich ein paar Matrizen zusammen.
Beispiel:

CPP:
   // First Scaling then translation
   D3DXMATRIX MScaleMTrans(fScale,0,0,0,
                     0,fScale,0,0,
                     0,0,fScale,0,
                     x,y,z,1);


Ich hätte nicht gedacht, dass sich jemand die Zeit nimmt und so weitergehende Optimierungen verwendet. Schließlich bekommen viele ihre Projekte auch ohne Optimierungen nicht fertig. Wink

Bis ich zu solchen Mittel greife, vergeht aber noch einige Zeit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
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
Seite 1 von 1

 
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