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

Aktuelle Zeit: Fr Jul 18, 2025 14:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: VBO: Entfernen von Vertices
BeitragVerfasst: Do Jan 26, 2006 15:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 23, 2005 20:31
Beiträge: 212
Wohnort: Sachsen/ Vogtland
Hossa,

ich beschäftige mich in meiner knappen Zeit gerade mit dem Rendern von Planeten via Heightmaps (Perlin Noise). als ersten Wurf habe ich eine Displayliste verwendet, was bei 500.000 Elemente großen Maps mir zwar deppert vorkommt, aber dennoch brauchbar funktioniert. Aber ich will's gern ein bisschen intelligenter lösen und ein dynamischer Detaillevel ist bestimmt nichts schlechtes.

Am cleversten scheint mir für diesen Zweck der geometrical mipmap-Algorithmus zu sein. Zur Darstellung würde ich wir gesagt nicht wie bisher Displaylisten, sonder VBO nutzen. Ich vermute, dass es am gängigsten ist, alle Vertices des Planeten in einer VBO zu laden. Oder?

Doch nun zum eigentlichen Problem. Wenn sich nun der Detaillevel eines Patches der Heightmap verringert, sollte ich ja die nicht mehr benötigten Vertices entsorgen, oder? Wie lösche ich ein eingetragenes Vertex aus dem VBO? Oder muss ich die ganze Liste neu laden?

Danke für's Lesen. Weiterführende Hinweise wären der Hammer schlechthin. :)
Grüße, DNA

_________________
Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 26, 2006 15:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke das dürfte nicht nötig sein. Bzw. wenn du aus einem VBO ein Vertex löschen möchtest, dann hast du keine andere Wahl es den Buffer neu aufzubauen. Aber vielleicht musst du es ja nicht löschen sondern kannst es einfach überspringen. Bei einem VBO ist es normal so, dass du einen Vertex und einen Indexbuffer hast. Was hindert dich daran lediglich in dem Indexbuffer das ein oder andere Element zu entfernen. Damit wird dann automatisch der VertexBuffer übersprungen. Allerdings weiß ich nicht wie der Algorythmus arbeitet. Wenn der zum Beispiel zwischenschritte interpoliert dürfte es schon spannender werden.

Aber bei VBOs zwingt dich natürlich niemand immer das ganze zu rendern. Du kannst auch einzelne Dreiecke aus ihm herraus rendern. Irgendwo gabs auch mal eine PDF (von NVidia glaube ich) in dem der effiziente Umgang mit VBOs beschrieben wurde. Da es teilweise mehrere Möglichkeiten für ein und den Selben weg gibt ist das dann nicht unwichtig.

PS: Ich hoffe du hast deinen VBO dann auch so erstellt, dass es dynamisch ist, damit es speziell optimiert werden kann. Weiß nicht obs tatsächlich auch was bringt.

[edit] Ach ja. Zum Löschen. Du kannst ein VBO in den Arbeitsspeicher mappen und dann wie jeden anderen Pointer bearbeiten (dessen Daten) und dann auch bereiche Kopieren oder überschreiben. Aber evtl ist das ja auch nicht nötig.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.007s | 16 Queries | GZIP : On ]