Ich versuche riesige Punktwolken (~ 150M) zu rendern, aber OpenGL rendert nur Teil (~ 52M) davon. Beim Rendern kleinerer Datensätze (< 40M) funktioniert alles einwandfrei. Ich benutze Single VBO. Wenn mehrere VBOs verwendet werden, werden Punkte gerendert, aber das Rendern ist schrecklich langsam, was erwartet wird. Mein Element hat eine Größe von 44 Bytes und GPU hat 3 GB Speicher zur Verfügung. Das sollte für fast 70M Punkte reichen, aber ich kann mit mehreren VBOs so viel wie 100M Punkte rendern. Gibt es eine OpenGL-spezifische Einschränkung pro VBO, die mir nicht bekannt ist?.glDrawArrays rendert keine ganze Punktwolke
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, cloud.size() * sizeof(Point), cloud.data(), GL_STATIC_DRAW);
// lot of other code
glDrawArrays(GL_POINTS, 0, cloud.size());
Sie rufen glBufferData nicht jeden Frame auf, oder? –
Verifizieren Sie, dass 'glBufferData()' den Fehlerstatus nicht auf 'GL_OUT_OF_MEMORY' setzt? – genpfault
Ich bin nicht. Dies ist nur Pseudo-Code. In der Tat benutze ich das schmutzige Flag, um den Puffer nur zu aktualisieren, wenn sich Daten ändern. – mitjap