Bonjour,

Je suis confronté à un soucis bien embêtant.
Chaque objet de ma scène à des coordonnées "personnalisées", avec chacune de ces coordonnées entières et comprises entre 0 et 99.
Pour savoir quel objet je pointe, j'ai mis en place une méthode de color picking : j'affiche la scène avec une couleur par face d'objet dans un FBO, et je récupère la couleur du pixel du milieu de l'image produite.
Pour la mise en place de cette méthode, aucun soucis.

Mais le problème vient de valeur de la couleur récupérée : pour savoir quel objet est pointé, j'ai créé une sorte de protocole dans les composantes de mes couleurs. Ce que je dois récupérer en théorie c'est une couleur de la forme (0.xxf, 0.yyf, 0.zzf), où (xx, yy, zz) sont les coordonnées personnalisées de l'objet pointé, et f l'identifiant de la face pointée.
Le problème, c'est que quand j'envoie par exemple (0.195, 0.195, 0.195), je reçois (0.196078, 0.196078, 0.196078), mais vu que je dois être précis au millième, ça pose un problème.

Mes shaders sont tout ce qu'il y a de plus basique (affichage d'une scène avec des couleurs), et j'avais pensé au début à la limite de profondeur des couleurs, mais bon vu que je récupère un résultat avec encore plus de décimales, je doute que ça vienne de là.

Auriez-vous une solution ?
Merci d'avance.


EDIT : en faite, les couleurs sont limités à 255 valeurs par composantes, et par exemple quand j'envoyais 0.195, il n'y avait aucun entier A tel que A / 255 = 0.195. La solution est donc de travailler en GLubyte et non en float.