2010-04-08 6 views
1

J'ai un grand nombre de lignes, que je restitue à partir d'un objet buffer de vertex en utilisant glMultiDrawArrays (GL_LINE_STRIP, ...);Objet tampon OpenGL avec des données supplémentaires

Cela fonctionne parfaitement bien. Maintenant j'ai beaucoup de paires de vertex que je dois aussi visualiser. Chaque paire est composée de deux sommets sur deux lignes différentes et la distance entre les sommets est petite. Cependant, j'aime avoir la possibilité de tracer une ligne entre toutes les paires de vertex avec une distance inférieure à une certaine valeur.

Ce que je voudrais avoir est quelque chose comme un objet tampon avec la structure suivante:

i1, j1, r1, 
i2, j2, r2, 
i3, j3, r3, 
... 

où sont des indices pointant vers les sommets et sont les distances les r les i et de j entre ces sommets. Ainsi chaque paire de vertex est stockée sous la forme d'un tuple (i, j, r). Ensuite, j'aime avoir un (vertex) shader qui dessine seulement les paires de vertex avec r < SOME_VALUE comme une ligne. Donc, ma question est la suivante: quelle est la meilleure façon d'y parvenir?

Répondre

0

Je suppose que le classique serait de stocker les données supplémentaires dans une texture, et faire une recherche dans votre shader. Mais si c'est vraiment fixe, vous pouvez stocker la distance elle-même en tant que coordonnée de texture affectée au vertex, et l'utiliser directement. Je pense que vous devrez le stocker avec chaque sommet (les shaders n'aiment généralement pas travailler avec des paires) indépendamment de la façon dont vous allez le résoudre.

Cela suppose que vous ne réutilisez pas les vertex pour plusieurs lignes.

EDIT:
Ok, donc, puisque vous réutilisez vertex, je suppose que vous aurez besoin de faire, être intelligent à ce sujet. S'il fait partie d'au plus deux lignes (ou d'un montant fixe) (comme une bande de lignes), vous pouvez faire deux appels, le premier appel utilisant la première coordonnée de texture, et ainsi de suite. Je verrai si je peux penser à une autre façon.

+0

Le problème avec le stockage par sommet est que chaque sommet peut faire partie de plusieurs paires et donc je dois stocker une quantité variable de données pour chaque sommet. – muksie

Questions connexes