Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Detection clic "sprite" 2D image TGA avec transparence [ Archives / OpenGL ] (kawito)

mardi 2 mars 2004 à 16:12:18 | Detection clic "sprite" 2D image TGA avec transparence

kawito


Bonjour,


j'aimerais savoir quel est la methode pour detecter un clic dans un sprite, un polygone texturé avec une image TGA qui comporte des parties transparentes.

j'arrive parfaitement a detecter un clic dans un polygone, avec la methode de picking.
exemple :
je fais des boutons (polygone rectangle + texture), la texture est chargée depuis une image au format TGA, cette image comporte de partie transparente.
comment detecter si le clic a eut lieu dans une partie du sprite ?

j'ai eut l'idee suivante :
je detecte si le clic a eut lieu dans le polygone avec la methode picking.
je connais donc le polygone qui a ete touché,

je vide le tampon GL_AUX0 avec du blanc par exemple.
je trace ce polygone texturé dans le tampon GL_AUX0
et je fais un glReadPixels(x, y, 1, 1,GL_RGBA, GL_UNSIGNED_BYTE, pixel);
x et y etant les coordonnées de la souris au moment du clic

puis si le pixel lu est a blanc, (de la couleur de vidange du tampon) c'est que le clic n'a pas eut lieu dans le "sprite"
sinon le clic a eut lieu dans le sprite.

je choisirais une couleur de vidange particuliere, car si le blanc est utilisé dans le sprite...

mais voila ça ne marche pas !
j'ai l'impression de ne pas lire le bon buffer !

je travaille en bouble buffer.
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

CODE:

/* je sauvegarde les buffers courant */
glGetIntegerv(GL_DRAW_BUFFER, drawBuffer);
glGetIntegerv(GL_READ_BUFFER, readBuffer);

/* je dessine dans le buffer auxiliere*/
glDrawBuffer(GL_AUX0);
/* couleur de vidange */
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
/* vider le tampon */
glClear(GL_AUX0);
/* afficher le polygone texturé */
lb[numEl].afficherElementGraphique();
/* je lit dans le buffer auxiliere */
glReadBuffer(GL_AUX0);
/* lire la couleur du pixel au coordonnée x,y */
glReadPixels(x, y, 1, 1,GL_RGB, GL_UNSIGNED_BYTE, pixel);
/* je restore les buffer courant
glDrawBuffer(*drawBuffer);
glReadBuffer(*readBuffer);
if (pixel[0] == 255 && pixel[1] == 255 && pixel[2] == 255)
{
"non - touché"
}
else
{
"touché !"
}


j'ai l'impression de ne pas lire le tampon GL_AUX0 ?
le pricipe est 'il bon ?
kawito




Cette discussion est classé dans : clic, pixel, sprite, gl, polygone


Répondre à ce message

Sujets en rapport avec ce message

Sprite avec open gl [ par goutbouyo ] Salut,Y a t-il une méthode particulière pour afficher des sprites avec open gl ???Car sur les tutos open gl ils ne parlent jamais de sprite .Merci d'a Polygone au premier plan avec texte [ par nisaloncaje ] Bonjoru, je suis débutant en OpenGL et j'ai une scène en 3d en perspective. J'aimerais maintenant créer un polygone en 2d qui soit au premier plan (co récupération de la couleur d'un pixel [ par njo80 ] Bonjour,Je suis en train de créer un petit jeu style zelda (en light), j'ai affiché ma carte ainsi que mon sprite qui bouge.Pour gérer la collision j' programme d'analyse colorimetrique d'image [ par crasse ] bonsoir :) !je suis a la recherche d'un programme qui puisse analyser les images venant d'une camera numerique directement relié a mon pc ( via une na pb en openGL avec GL_LINES [ par F0ra ] Bonjour, j'ai un problème avec GL_LINES en openGL.J'ai réalisé une fonction pour afficher une ligne.Sur l'image, les lignes devraient se toucher :<fon traitement d'image [ par mapinfo ] Bonsoir,Voilà, je voudrais écrire un code en C qui :Passe une image en noir et blanc.Passe une image en 256 niveaux de gris.Affiche une image par "car transparence en OpenGl [ par F0ra ] Bonjour, J'ai un problème en OpenGl Je voudrais rendre uniquement la couleur rose< Problème de placage de texture [ par unrealgun ] Bonjour,Je suis en train de développer uGUI en C++ sous linux avec SDL et OpenGL.Voila mon probleme : je charge une image PNG transparente avec SDL_Im Profondeur de champs [ par Grizou0 ] Bonjour, je suis novice avec la librairie GL ( Borland C++6).Apparement, les vertex visuel sur l'ecran sont limité entre -45.0 et +45.0 sur l'axe Z en


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.