Viseur de la souris ( crosshair ) [Résolu]

Signaler
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008
-
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
-
Salut,
j' ai besoin d' aide pour mon crosshair,
j' ai fait un pti moteur 3d avec vue souris, chargement de texture .tga,
chargement d' objet perso etc
et tout cela marche mais je n' arrives toujours pas a avoir un viseur tout simple a la con lol : quand je bouge ma souris la vue est rotaté et quand j' affiche un quad sous le curseur et bien celui ci rotate aussi, quand j' utilise glVertex2f a la place de glVertex3f et bien le quad se trouve au dessus de moi
pfff c lourd a la fin j' ai écumer le net a la recherche d' un tutorial mais tres peux traitent de ce sujet, et ce qui le font ne m' eclairent pas, j' ai meme regarder des sources cppfrance mais rien n' y fait
donc je voudrais savoir:
Est-il possible de définir une matrice qui ne peut ëtre rotationnée ?
merci pour l' aide

DarkBoss

12 réponses

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
oui on peut je pense:

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(...);// ou autre chose

glPushMatrix();

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

// on affiche tout en 3D

......

// on passe en 2D

glMatrixMode(GL_PROJECTION);

// on remet la matrice à l'identité

glLoadIdentity();

// vue 2D à la taille de l'écran

gluOrtho2D(0,width,height,0);

glMatrixMode(GL_MODELVIEW);


glLoadIdentity();

// on affiche tout en 2D

.....

//

glMatrixMode(GL_PROJECTION);

glPopMatrix();

// on a de nouveau la matrice de vue 3D

glMatrixMode(GL_MODELVIEW);



glLoadIdentity();



Il faudrait tester

A m a u r y
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
il faut tout simplement que tu passe en 2D au moment d'afficher le crosshair .

// on passe en mode matrice pour la projection

glMatrixMode(GL_PROJECTION);

// on remet la matrice à l'identité

glLoadIdentity();

// vue 2D à la taille de l'écran

gluOrtho2D(0,1.0,1.0,0);

// on repasse en mode matrice modélisation

glMatrixMode(GL_MODELVIEW);

// remet la matrice à l'identité

glLoadIdentity();



ensuite tu affiche le crosshair:

si tu as une texture avec une couche alpha tu fais tout simplement



glBegin(GL_QUADS);

glTexCoord2f(0.0,0.0);

glVertex2f(0.0,0.0);

glTexCoord2f(1.0,0.0);

glVertex2f(1.0,0.0);

glTexCoord2f(1.0,1.0);

glVertex2f(1.0,1.0);

glTexCoorf2(0.0,1.0);

glVertex3f(0.0,1.0);

glEnd();



au passage si tu doit afficher tu texte tu peux le faire maintenant que
tu as en 2D . Si tu veux faire une translation il suffit que faire

glTranslatef(cx,cy,0.0);

tu peut aussi faire une rotation sur un axe .

Il faut aussi désactiver le ZBUFFER et le LIGHTING .

A m a u r y
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

ok merci je vais essayer

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

par contre apres fo t'il remettre la vu de depart ?

DarkBoss
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
oui

il faut refaire un truc comme gluPerspective ou glOrtho

A m a u r y
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

ok merci

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

c tout con mais il y a t'il une fonction pour sauvegarder la vu et la remettre a l' identique apres ?

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

merci de ton aide precieuse
ça fonctionne a merveille maintenant
voici mon code :
void Draw(){
Lampe.setlight();
Lampe.open();
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)wdth/(GLfloat)hght,0.1f,100.0f);
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
objCamera.lookAt();
grid();
glEnable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
glPushMatrix();
glColor3d(0.0, 0.0, 0.0);
glPopMatrix();
Draw_World("level1.lvl");
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glMatrixMode(GL_PROJECTION);
// on remet la matrice à l'identité
glLoadIdentity();
// vue 2D à la taille de l'écran
gluOrtho2D(0,wdth,hght,0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// on affiche tout en 2D
draw_cible();
//
glMatrixMode(GL_PROJECTION);
glPopMatrix();
// on a de nouveau la matrice de vue 3D
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

lol nan mon code est pas bon mé le tiens l' est

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

c marrant kan je fais le code que j' ai posté avec le glPopMatrix(); absent dans draw_cible(); et bien c' est la fonction draw_world(); qui sert de pointeur sinon le pointeur ne s' affiche pas

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

il ne veut pas afficher le carré en 2d...

DarkBoss
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
tu n'as pas désactiver le depth test quand tu dessines en 2D . Je suis pas sûr que c'est çà mais essaye quand même .

A m a u r y