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

Aktuelle Zeit: Di Jul 08, 2025 21:27

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Veränderbares Terrain
BeitragVerfasst: Fr Jan 05, 2007 10:50 
Offline
DGL Member

Registriert: Fr Jan 05, 2007 09:46
Beiträge: 7
Hallo zusammen!
Ich bin noch sehr neu und hoffe daher auf Verständnis ;-)

Also folgendes:
Ich will (etwa 50x50) Punkte auf einer Ebene darstellen. Die Höhe dieser Punkte ist in einem Array gespeichert. Leider ist es nicht statisch, sondern die Punkte im Array ergeben sich erst nach und nach. Ich benutze das ganze für die Darstellung einer Fläche, die durch eine Elektronik gemessen wird.
Ich benutze im Moment Displaylisten, jedoch scheint die Kompilierzeit davon zu groß zu sein. Ich würde sie also nach jedem erfassten Punkt neu erstellen und bei 10 Messwerten/sek durch die Elektronik ist das erstellen zu langsam. Dann gerade eben die 10 erzeugten Listen pro Sekunde erreicht. Manchmal passiert es dann eben, dass das Programm zu langsam für die Elektronik wird.
Leider gibt es keine Möglichkeit Dreiecke in die Listen hinzuzufügen, daher muss ich einen anderen Weg wählen. Das Rendern ohne Displaylisten etc. ging zwar schneller verbrauchte aber mehr als 100mb Ram bei der hälfte der Messung. Und komischerweise, selbst wenn einfach nur das Bild ohne Veränderungen dargestellt wurde stieg der Speicherverbrauch ständig mit 2mb pro Sekunde an.

Da sich das ganze eben Verändert dachte ich daran mit VBO's zu arbeiten aber da ich noch sehr wenig Erfahrung habe und ich nichtmal weiß ob das auf dem Laptop (bestimmt 3-4 Jahre alt) läuft, auf dem das Programm laufen soll, bin ich damit eher vorsichtig.

Ich würde mich sehr über Kommentare freuen! :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 05, 2007 10:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ist die anzahl der Messwerte bei beginn der Messung bekannt?

Falls dem so ist, kannst du ein Array einfach mit 0en initialisieren und die Karte jedesmal frisch rendern.
DL sind hier nicht sinnvoll (da veränderlich).
VBOs könnten funktionieren. Du findest bei uns ein Tutorial dazu.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 05, 2007 11:50 
Offline
DGL Member

Registriert: Fr Jan 05, 2007 09:46
Beiträge: 7
Oh, ich habe einen Fehler gefunden. Ich habe es nicht jedes mal neu rendern lassen, da dadurch komischerweise der Speicherverbrauch auf über 100mb anstieg. Das lag an Kugeln, die ich jedes mal erstellt aber nicht wieder gelöscht habe. Nun habe ich halt nur noch das Problem, dass meine Graka bei 50x50 schon bei der hälfte der Messung in die Knie geht, da es wahrscheinlich einfach zu viele Dreiecke sind die er zeichnet. Ich werde mal schauen ob ich noch was optimieren kann.

Also die Größe des Arrays ist mir bekannt und ich lasse es auch am Anfang mit Nullen initialisieren. Es ändert sich ja auch immer nur ein einziger Wert. Gibts da nicht was sinnvolleres als es jedes mal komplett neu an die Graka senden zu lassen?
Danke schonmal für die Hilfe!


Zuletzt geändert von Lunatic am Fr Jan 05, 2007 11:58, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 05, 2007 11:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Bei 50x50 Punkten würde ich mir keine Sorgen machen. Das kannst du getrost auch noch auf richtig alter Hardware ohne DLs oder VBOs rendern. Habe gerade mal gerechnet. 50x50 Punkte ergeben eine Fläche von 49x49 Vierecken und jedes Viereck besteht aus 2 Dreiecken. Macht eine Gesammtanzahl von 4802 Dreiecken. Und das schafft selbst eine 10 jahre alte TNT2 auf einer Arschbacke. In älteren Laptops ist nicht zwingend etwas bessere eingebaut aber selbst ein oller Intelchip sollte das eigentlich noch hinbekommen.

Warum dein Speicher allerdings so extrem ansteigt kann ich nicht verstehen. Ich denke aber mal, dass es nur ein ganz trivialer Fehler ist.

Evtl solltest du dich auch von deinen Arrays verabschieden. Diese sind zwar ganz nett und schön vom Programmierhandling aber wenn du dir selber einen Speicherbereich schnappst und dort einzelnen Werte drin ablegt ist es durchaus schneller. Vor allem könntest du dann auch die Adresse des Speichers durch ein VBO austauschen. Das würde den Code flexibler gestalten. Aber bei einem 50x50 array sollte das auch noch nicht so das Problem sein.

Wie sieht das eigentlich aus was du von deinem Messvorgang zurückbekommst? Evtl wäre es auch mal ganz praktisch wenn du uns mal deinen derzeitigen Rendercode zeigst. Bzw die Stelle an der du deine Daten erhältst wäre auch nicht doof.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 05, 2007 12:04 
Offline
DGL Member

Registriert: Fr Jan 05, 2007 09:46
Beiträge: 7
Nunja also Wie schon gesagt sind nicht zwischen je vier Punkten zwei sondern vier Dreiecke, was aber wahrscheinlich auch nciht so viel ausmachen sollte. Also die Messwerte werden durch eine Klasse in das Array geschrieben. Das hat also mit dem Zeichnen an sich nichts zutun. Es wird auch direkt zu Beginn der Messung mit SetLength auf ne bestimmte Größe gesetzt und dann halt mit Nullen beschrieben. Bei der Zeichenprozedur werden nur diese Werte ausgelesen. Bisher habe ich die Dreiecke zwischen vier Punkten immer mittels Triangle Fan gemacht. Ich werde mal versuchen ob es mehr bringt was mit Triangle Strips zu machen. Das Speicherproblem ist ja nun gelöst und ich muss wahrscheinlich nur noch das ganze so optimieren, dass es schneller läuft. Ich setze nacher mal die Prozedur hier rein.

Edit:

Hab ein paar Fehler gefunden und nun läufts total gut und schnell =)
Vielen Dank nochmal für die Hilfe und das Verständnis =D


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]