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

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

Votre réponse

12 réponses

Meilleure réponse
Pamaury 341 Messages postés jeudi 3 avril 2003Date d'inscription 17 juin 2008 Dernière intervention - 12 juin 2005 à 14:16
3
Merci
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

Merci Pamaury 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

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

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

DarkBoss
Commenter la réponse de DarkBoss
Pamaury 341 Messages postés jeudi 3 avril 2003Date d'inscription 17 juin 2008 Dernière intervention - 12 juin 2005 à 12:24
0
Merci
oui

il faut refaire un truc comme gluPerspective ou glOrtho

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

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

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

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

DarkBoss
Commenter la réponse de DarkBoss
Pamaury 341 Messages postés jeudi 3 avril 2003Date d'inscription 17 juin 2008 Dernière intervention - 12 juin 2005 à 15:16
0
Merci
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
Commenter la réponse de Pamaury

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.