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

Aktuelle Zeit: Fr Jul 18, 2025 08:15

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Sep 18, 2009 17:38 
Offline
DGL Member

Registriert: Mo Apr 06, 2009 17:49
Beiträge: 8
Hallo,
wenn ich bei der Darstellung einer Landkarte auch Symbole (Parkplaetze, Schutzhuetten, ...) rendern moechte, koennten das auch mal n (10000<n<100000) Stueck sein. Leider bricht dabei die Performance total ein.
Probiert habe ich
- Displaylisten (je eine pro Symbol; zusammengefaszt in einer Symbol-DisplayListe)
- Texturen (je eine pro Symbol)
- Rastergrafiken (gerendert mit glBitmap()).

Ueber 4 FPS komme ich damit leider nicht hinaus. Habt Ihr Ideen, wie man soetwas angehen musz?

Instancing waere sicher eine Moeglichkeit -- das Programm musz aber auch auf aelterer Hardware laufen, so dasz dies einklich nicht in Frage kommt.

Dank & Grusz,
Eidechsenlord


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 18, 2009 17:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Eine Textur pro Symbol?
Aber hoffentlich malst du dann alle gleichartigen Symbole gleichzeitig? Sonst bringt dich wahrscheinlich der Texturwechsel um.
Mach am besten alles in eine Textur und wähle das richtige dann mithilfe der Texturkoordinaten.

Zu Displaylisten: Heutzutage werden sie hardware-/treiberintern wie vbo's gehandelt - und die spielen erst ab einer gewissen Größe ihre Vorteile aus. Im Gegenteil! Kleine (ich vermute mal, du benutzt Quads, wo du die Symbole drauftexturierst?) Objekte sind sogar langsamer als direkt im Immediate-Modus.

Ich hoffe, ich konnte helfen.
LG Ziz

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 18, 2009 18:14 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Hast du dir schon Gedanken über Raumunterteilungsstrategien (space partitioning) gemacht? Je nach Darstellung lohnen sich Quad-,Oct- oder Binarytrees. Um diese sinnvoll zunutzen muss man natürlich noch sein Frustum bestimmen und prüfen welcher der Zweige der Trees überhaupt im sichtfeld liegt. Auf diese weiße grenzt man den zu zeichnenden Anteil der Obekte stark ein. Das mit dem Instancing ist ebenfalls ein guter ansatz. sollte das aber aufgrund von hardware nicht in Frage kommen, kann man als alternative alle gleichen Objekte vor transformieren und in einem VBO sammeln um sie in einem rutsch an die Graka zu schicken und zu zeichnen. Auf diese weiße sollte es kein Problem sein wieder auf ein ansehnlichen FPS Bereich zu kommen.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 18, 2009 19:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also ich bezweifle das du 10000 oder 100000 Symbole gleichzeitig auf dem Bildschirm siehst. Du solltest dir also dringend die angesprochenen Raumunterteilungstechniken anschauen. Wahrscheinlich sind dann < 100 Symbole wirklich sichtbar und das rendern kein Problem mehr.

Wenn du wirklich diese 100000 Symbole rendern musst ist Instancing wirklich eine Option, aber ich bezweifle das du sie brauchen wirst.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 05, 2009 16:01 
Offline
DGL Member

Registriert: Mo Apr 06, 2009 17:49
Beiträge: 8
Hallo,
vielen Dank fuer Eure Anregungen. Hab zwischenzeiltich mit PointSprites und vortransformierten texturierten Quads (im VBO) rumgespielt und mit dem VBO ist's wieder richtig schnell geworden.
FrustumCheck fuehre ich (objektweise) schon durch. Einen QuadTree werde ich demnaechst aber auch noch einbauen -- da kann man bestimmt noch einige "ifs" einsparen.

Gruesze,
Eidechsenlord


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 05, 2009 16:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Den Quadtree solltest du wirklich einbauen. :) Damit musst du dir nicht jedes Objekt einzeln angucken, ob es im View Frustrum liegt, sondern kannst auf einmal ganze Gruppen verwerfen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 05, 2009 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Try to use vertex buffers. For opengl you need the opengl variant as vertex buffer are directx.

Also be inspired by r2vb animation example from the ati site. http://developer.amd.com/downloads/R2VB-Animation.zip should be the one. The ati developer site is a nightmare to navigate.

_________________
http://3das.noeska.com - create adventure games without programming


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 » OpenGL


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 | 16 Queries | GZIP : On ]