Viseur de la souris ( crosshair )

Résolu
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008 - 11 juin 2005 à 01:25
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 - 12 juin 2005 à 15:16
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

Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
12 juin 2005 à 14:16
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
3
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
11 juin 2005 à 15:26
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
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 11:39
ok merci je vais essayer

DarkBoss
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 11:55
par contre apres fo t'il remettre la vu de depart ?

DarkBoss
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
12 juin 2005 à 12:24
oui

il faut refaire un truc comme gluPerspective ou glOrtho

A m a u r y
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 12:28
ok merci

DarkBoss
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 13:13
c tout con mais il y a t'il une fonction pour sauvegarder la vu et la remettre a l' identique apres ?

DarkBoss
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 14:31
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
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 14:33
lol nan mon code est pas bon mé le tiens l' est

DarkBoss
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 14:41
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
0
DarkBoss Messages postés 154 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 12 décembre 2008
12 juin 2005 à 14:51
il ne veut pas afficher le carré en 2d...

DarkBoss
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
12 juin 2005 à 15:16
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
0
Rejoignez-nous