[OpenGl] Problème actualisation du tampon de profondeur

Problème actualisation du tampon de profondeur [OpenGl] - Programmation

Marsh Posté le 03-05-2006 à 16:58:04    

Bonjour à tous,
Je travail actutellement sur le module de visualisation 3d d'un logiciel d'imagerie médicale qui utilise openGl, couplé avec le widget GtkGlArea. L'une des fonctionalités liées au module 3d de ce logiciel est la possibilié de déplacer un curseur (une croix) au sein de la scène 3d en cliquant sur la molette de la souris. Par ailleurs le comportement de ce curseur a été codé de telle sorte que si on clique dans le "vide", le curseur disparait, sinon il reste "collé" à la surface de l'objet.
 
J'en viens à mon problème :
Si l'on déplace (lentement) le curseur en gardant la molette enfoncée, celui ci ce déplace bien, mais on constate 2 problèmes majeurs :
 
    * la taille du curseur ce modifie -> les segments de la croix augmentent en taille
    * il ne colle plus à la surface -> on peut se déplacer dans le vide.
 
J'ai volontairement omis de balancer des lignes de code pour d'abord vous décrire le problème de manière globale. Personnellement je vois 2 hyposthèse envisageables :
 
   1. problème de mise à jour du tampon de profondeur, car la fonction : glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &prof), associe une valeur différente de 1 à prof. Et mon curseur se retrouve dans "les airs" et "le vide" -> la profondeur est erronée
 
  2. problème de réaffichage car mon curseur (une croix) grandit quand je le déplace
 
Ces 2 phénomènes se produisent UNIQUEMENT quand je déplace mon curseur lentement (molette préssée+déplacement lent).
 
Comme vous l'avez surement devinez je travail sur un code qui n'est pas de moi, et je suis en train d'apprendre OpenGl sur le tas. Je n'ai donc que les connaissances de bases en la matière et encore , mais je suis en train d'y remédier. ;)  
 
Merci d'avance pour ceux qui prendront le temps de répondre

Reply

Marsh Posté le 03-05-2006 à 16:58:04   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed