|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 09.12.2007, 04:02 Titel: 3D-Abbildungen |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.12.2007, 09:51 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 09.12.2007, 09:56 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.12.2007, 10:26 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 09.12.2007, 10:41 Titel: |
|
|
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 gut zu wissen |
|
Nach oben |
|
|
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 09.12.2007, 14:20 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 09.12.2007, 20:39 Titel: |
|
|
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 |
|
|
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 10.12.2007, 10:54 Titel: |
|
|
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.
Bis ich zu solchen Mittel greife, vergeht aber noch einige Zeit. |
|
Nach oben |
|
|
|
|
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
|