J'ai finalement atteint le point que je peux ajouter de la couleur à mes sommets. Mais maintenant je veux améliorer mon taux de FPS. Voici la situation actuelle. J'ai un grand nombre de sommets (~ 200000), et chacun d'eux peut être dans l'une des ~ 150 classes. Chaque classe est différenciée par sa couleur. Je dessine actuellement mes sommets comme:glColorPointer essayant d'améliorer fps
glEnableClientState(GL_VERTEX_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferVertices)
glVertexPointer(3, GL_FLOAT, 0, None)
glEnableClientState(GL_NORMAL_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferNormals)
glNormalPointer(GL_FLOAT, 0, None)
glEnableClientState(GL_COLOR_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferColors)
glColorPointer(3, GL_FLOAT, 0, None)
glDrawArrays(GL_POINTS, 0, len(self.vertices)/3)
Tout fonctionne bien et le FPS est ~ 60. Tous mes tampons sont générés uniquement au moment de l'initialisation. Mais maintenant, les couleurs qui représentent chaque classe changeront rapidement, une fois toutes les millisecondes environ. Avec ça les couleurs changeront aussi donc je devrais recréer mon buffer couleur pour chaque tirage, et pour 200000 vertices j'ai l'impression que le FPS sera proche de 0. Le correctif que j'essaye de mettre en place est de garder une couleur fixe buffer, mais au lieu des couleurs réelles, ils conserveraient un pointeur sur la classe qu'il représente. De cette façon, seules les 200 couleurs des classes vont changer. Le problème est que je ne sais pas comment cela pourrait être implémenté dans OpenGL. Est-ce faisable? Des pointeurs sur la façon de faire cela?
Merci pour les gars d'entrée. Je vais essayer vos suggestions. – Bogdan