Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 20:49

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 18:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich hab mal ne frage...
schaut euch mal dieses Bild an:
<a href='http://www.koshigaya.de/DelphiGL/TLoF/Image1.jpg' target='_blank'>http://www.koshigaya.de/DelphiGL/TLoF/Image1.jpg</a>

Das sind 8514 Vertex'e, also nicht sonderlich viel... trotzdem habe ich grademal 48FPS... woran liegt das???

Ich meine, gut.. ich hab nur ne GeForce2 Pro, aber z.B. HalfLife, Unreal etc haben bei weit komplexerer Grafik viel viel mehr FPS.. muß man vieleicht bei der Initialisierung erstmal 3D Beschleunigung oder sowas aktivieren....???

An den Texturen kann es auchnicht liegen (sind alle 128x128 groß), denn selbst wenn ich die Texturen ausschalte wird es nich schneller (nur minimal..)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 19:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hmm...in deinem Posting fehlen die nötigen technischen Infos zu der Art und Weise wie du deine Primitiven zeichnest, weshalb hier eine Antwort rescht pauschalisierend ist.
Wenn du z.B. deinen Octree (nutzt du ja, oder?) in jedem Frame neu berechnest und dann auch noch die Dreiecke einzeln an OpenGL übergibst, dann ist klar warum die Sache hier verdammt langsam ist.Evtl. ist dein Octree auch zu tief und der Overhead den du durch den OT hast ist im Endeffekt größer als der Nutzen des so erreichten Cullings.
An deiner Stelle würd ich den Octree (wenn du in per Frame berechnest) einfach nur dann neu berechnen, wenn isch etwas (z.B. der Blickwinkel des Betrachters) verändert hat.

Was auch noch stark bremst sind häufige Texturenwechsel (besser nach Material sortiert zeichnen) und ständige Statewechsel mittels glEnable bzw. glDisable.Was du auf jeden Fall auch vermeiden solltest sind Sachen wie glPushAttrib und glPopAttrib, denn wenn du so viele Attribute sicherst, wirds sehr seh langsam.

Evtl. ist deine Anwendung aber auch gar nicht geometrielimitiert, sondern füllratelimitiert.Das bedeutet, das die Graka zwar keine Probs mit der Zahl der Dreicke hat, aber du irgendwo die komplette Füllrate für z.B. Skybox und Blending verbrätst.Bei ner GeForce2 ist die Füllrate nämlich im Vergleich zu neuen Karten recht bescheiden!

Kurz und bündig : Gib mal ein paar genaue technische Hintergründe zu deiner Engine, dann kann man dir auch evtl. genauer helfen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 19:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Eventuel liegt es auch daran, dass du gewissen Technologien nicht verwendest bzw genau das verwendest was langsam ist.
So wie glPolygonMode mit Lines. Oder bei jeder Fläche ein glBegin und glEnd (gibt enorm Overhead).
Oder es ist einfach nur so langsam, weil du nichts in Displaylisten oder (hardware) VertexArray (oder den ganzen schmonsens) packst.
Bei einer Radeon 9x ist der iterative Modus (jede Fläche einzeln rendern) nur einen Bruchteil schneller als der von einer TNT2.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

also der Octree wird im Editor nochnich unterstüzt, nur im Spiel ansich.. im Editor bin ich noch am überlegen wie ich es mache (Denn er müßte immer neu berechnet werden wenn man was verändert an der Geometrie.. und Octree Berechnung dauert... *g*)

Häufiger Texturen Wechsel.. auchnicht, sind ja nur 12 Texturen oder so.. eine einzige wird 2x verwendet = 13 Wechsel (Ok, das werd ich noch sortierend machen)

StateWechsel mh... müßte ich mal grad gucken, glaub aber eigentlich auchnich. glPushAttrib und glPopAttrib benutz ich nie.

Zur darstellung der Objekte benutze ich VertexArray's. Also jedes Objekt ist ein VA = 13 VA's.

Ist evtl glPushMatrix und glPopMatrix recht langsam?? Das benutze ich ziemlich häufig... *guck unsicher*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab grad nochmal was mit den Texturen rumprobiert...
Bei eingeschalteten Texturen: 25 FPS
Bei ausgeschalteten Texturen: 50 FPS

(Wenn ich die Scene komplett von weit weg betrachte)

Dazu auchnochne frage...
Welche Methode ist schneller um ein Objekt ohne Textur zu rendern..?

a)
Code:
  1. glDisable(GL_TEXTURE_2D);
  2. //Objekt Zeichnen
  3. glEnable(GL_TEXTURE_2D);


B)
Code:
  1. glBindTexture(GL_TEXTURE_2D,0);
  2. //Objekt Zeichnen


Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Eventuell liegt es auch daran wie ich den VertexArray zeichne...??

Code:
  1.  &nbsp; &nbsp; &nbsp;glPushMatrix;
  2.  &nbsp; &nbsp; &nbsp; &nbsp;glVertexPointer(3,GL_FLOAT,0,VAObj.Vertex);
  3.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoordPointer(2,GL_FLOAT,0,VAObj.TexCoord);
  4.  &nbsp; &nbsp; &nbsp; &nbsp;glNormalPointer(GL_FLOAT,0,VAObj.Normals);
  5.  &nbsp; &nbsp; &nbsp; &nbsp;glMultMatrixf(@VAObj.Matrix);
  6.  &nbsp; &nbsp; &nbsp; &nbsp;glDrawArrays(VAObj.Typ,0,Length(VAObj.Vertex));
  7.  &nbsp; &nbsp; &nbsp;glPopMatrix;


VAObj ist vom Typ:
Code:
  1.  &nbsp;TVertexArray = Record
  2.  &nbsp; &nbsp;Vertex: Array of Array[0..2] of Single;
  3.  &nbsp; &nbsp;Normals: Array of Array[0..2] of Single;
  4.  &nbsp; &nbsp;TexCoord: Array of Array[0..1] of Single;
  5.  &nbsp; &nbsp;Matrix: TMatrix;
  6.  &nbsp; &nbsp;Typ: Cardinal;
  7.  &nbsp;end;


In Typ steht ob es Triangle oder Quads etc sind.

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 20:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
@Texturen :
Wenn sich deine Framerate bei deaktivierten Texturen verdoppelt, ist deine Anwendung zumindest teilweise Füllratenlimitiert.Da kannste leider nicht viel gegen machen (ausser evtl. Skybox weglassen).Evtl. liegts aber auch daran das du sonst viel Bustraffic verursachst, und so deine Anwendung von der durch die Texturen genutzten Bandbreite etwas ausgebremst wird.

@Vertexarray :
Wie groß (Vertexe) ist denn dein durchschnittliches VertexArray?Wenn's kleiner als 150-200 Dreiecke ist, dann lohnt sich die Nutzung von VAs nicht.Eher im Gegenteil : Wenn du viele Vertexarrays mit jeweils recht wenigen Polygonen nutzt, wird die Sache sogar langsamer als ohne VAs.

@Push/Popmatrix :
Diese Funktionen sind eigentlich recht primitiv und brauchen kaum Leistung.Allerdings sollte man auch diese nur dann nutzen wenn unbedingt nötig.

@Rendermethode :
Methode zwei ist AFAIK UNGÜLTIG, da du ein nicht gültiges Texturenziel angbist...das kann sein dass das auf anderen Rechner gar nicht funzt und du ne Schutzverletzung generierst!

P.S. : Das Forum hier hat ne wundervolle "Edit"-Funktion...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]