J'essaie de rendre d'énormes nuages de points (~ 150M) mais OpenGL n'en rend qu'une partie (~ 52M). Lors du rendu de jeux de données plus petits (< 40M) tout fonctionne bien. J'utilise un seul VBO. Lorsque vous utilisez plusieurs VBO, les points sont rendus mais le rendu est terriblement lent, ce qui est attendu. Mon élément a une taille de 44 octets et GPU a 3 Go de mémoire disponible. Cela devrait suffire pour près de ~ 70M points mais je peux rendre jusqu'à 100M points avec plusieurs VBO. Y at-il une limitation spécifique OpenGL par VBO dont je ne suis pas au courant?.glDrawArrays ne restitue pas le nuage de points entier
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());
Vous n'appelez pas glBufferData à chaque image, n'est-ce pas? –
Vérifiez-vous que 'glBufferData()' ne définit pas l'état d'erreur sur GL_OUT_OF_MEMORY'? – genpfault
Je ne suis pas. Ceci est juste du pseudo code. En fait, j'utilise un drapeau sale pour mettre à jour le tampon uniquement lorsque les données changent. – mitjap