GL_POINTS--> au bord du suicide

Résolu
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 14 avril 2006 à 21:32
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 15 avril 2006 à 00:53
bon voila, je reposte car je pense avoir ciblé le probleme, et c'est du coté d'openGL qui a un truc qui m'echappe et non du wxGLCanvas;

En fait j'arrive a dessiner des formes mais pas des points ( ca me rends dingue ), je me demande si c'est pas mon initialisation qui a un probleme, je débute tout juste en openGL donc se serai bien simpa de m'aider un peu :

initialisation:


void MyCanvas::initGl(
void)


{


SetCurrent();


glShadeModel(GL_SMOOTH);



//glClearColor(1.0f, 0.0f, 0.0f, 0.0f);


glClearDepth(1.0f);


glEnable(GL_DEPTH_TEST);


glDepthFunc(GL_LEQUAL);


}

le rendu ds un PaintEvent :


void MyCanvas::OnPaint(wxPaintEvent &WXUNUSED(
event))


{


wxPaintDC dc(
this );

#ifndef __WXMOTIF__



if (!GetContext())
return;


#endif



if( !isInit )
{


initGl();


isInit =
true;


}


glMatrixMode(GL_MODELVIEW);


glLoadIdentity();


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);



if( m_gllist == 0 )


{


m_gllist = glGenLists( 1 );


glNewList( m_gllist, GL_COMPILE_AND_EXECUTE );






glBegin(GL_POINTS);


glVertex3f( 50.0f, 60.0f, -1.0f );


glEnd();


glEndList();


}



else


{


glCallList( m_gllist );


}


glFlush();


SwapBuffers();


}

alors ca ca ne 'affiche aucun point mais:


glBegin(GL_QUADS);


glNormal3f( 0.0f, 0.0f, 1.0f);


glVertex3f( 0.5f, 0.5f, 0.5f);


glVertex3f(-0.5f, 0.5f, 0.5f);


glVertex3f(-0.5f,-0.5f, 0.5f);


glVertex3f( 0.5f,-0.5f, 0.5f);


glEnd();

a la place du dessin des points fonctionne trés bien, pourquoi??;

Y a t-il quelque chose de spécial a faire pour dessiner des points avec OpenGL?????

svp aidez moi, je désespere complétement la

merci
@+;
satellite34

http://www.rootscommunity.com/</FON< body>

16 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 avril 2006 à 21:40
Bas c'est tout con, ton point il est trop loin de la caméra ou meme pas dans le champ de vision. Tu peux pas le voir ...

Essai ca:

glVertex3f(0.0f, 0.0f, 0.5f );
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 avril 2006 à 22:54
http://www.codesampler.com/oglsrc.htm

ya que des sources, mais bien utile.



Mais sinon, j'avais acheté le red book, donc j'ai pas trop eu besoin de site autre que nehe.
3
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 avril 2006 à 21:46
yééééééé, je suis tout fou, mon point est la !!!!!!! tu viens de faire s'achever 48h de prise de tete ! mdr, ca peut paraitre naze mais ca fait 48h que je dev sous openGL est tout est abstrait encore, merci beaucoup, a la revoyure...



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
14 avril 2006 à 21:52
Salut,

C'est certainement un probleme avec les coordonnées du point que tu essaies d'afficher.... (50.0f, 60.0f, -1.0f) est LARGEMENT en-dehors de l'écran, avec un système de coordonnées par défaut... Vu que le point de coordonnées (0.0f, 0.0f, X.Yf) est au centre de la fenêtre... Je viens d'essayer avec (0.0f, 0.0f, -6.0f), j'ai eu aucun souci...

Vérifie aussi la distance de ton plan d'affichage proche, il ne doit pas être défini sur 0.0f. Mis a part ceci, je ne vois pas d'autre souci...

@+ bonne soirée
0

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

Posez votre question
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
14 avril 2006 à 21:53
Manque de vitesse ? ... :p
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 avril 2006 à 21:57
lol, ok, je crois qu'un peu de théorie s'impose, auriez-vous des liens vers des cours simples ( pas trop de maths car les etudes c'est bien loin .... )????

Anglais ou francais peut importe, et a part nehé, lol, j'y suis dessus depuis 2 jours non stop;

bon sur ce je vais enfin pouvoir aller dormir........



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 avril 2006 à 22:15
Pas trop de math ? ben oublie la 3D alors... :)

Non sérieux, tu peux pas éviter l'algèbre linéaire.
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 avril 2006 à 22:42
ben envoi toujours, je peux m'y remettre , je suis motive la, et la motivation c'est TOUT !!!



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 avril 2006 à 23:57
merci, ben je crois que si ca me passionne j'acheterai le bouquin ( c'est bien partit );

sinon, ben je butte sur un nouveau pb, lol, c'est pas fini !

j'ai bien capté, je pense les coordonnées des vertex, en fait je veux dessiner avec openGL ds un thread a 25ms;

le truc , c'est que quand je dessine ds le thread rien ne s'affiche;, meme avec un point central, ca te dis quelque chose com' probleme ou c'est dut a mon wxGLCanvas???

J'avoue que je comprends pas trop, regarde :

dans mon wxGLCanvas:


void MyCanvas::initGl(
void)


{


SetCurrent();


glShadeModel(GL_SMOOTH);



//glClearColor(1.0f, 0.0f, 0.0f, 0.0f);


glClearDepth(1.0f);


glEnable(GL_DEPTH_TEST);


glDepthFunc(GL_LEQUAL);


}


void MyCanvas::DrawPoint( GLfloat x, GLfloat y, GLfloat z )


{


SetCurrent();


glMatrixMode(GL_MODELVIEW);


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


glPointSize( 5 );


glBegin(GL_POINTS);


glVertex3f( x , y , z );


glEnd();


glFlush();


SwapBuffers();


}

ceci marche trés bien lors du paintEvent du canvas;

dans le thread :


m_pCanvas->DrawPoint( 0.0f, 0.0f, -5.0f );

ni errur ni quedalle, rien ne se passe, ya quek choze qui m'a échappé ou quoi?

merci pour ton aide.


@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 avril 2006 à 00:07
Ton point, il est derriere la caméra.

Essai ca: m_pCanvas->DrawPoint( 0.0f, 0.0f, +5.0f );




Par défaut, il me semble que la caméra pointe vers les z positifs. Mais je sais plus trop.

Utilise gluLookAt(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); pour
faire en sorte que la caméra soit en 0,0,0 et regarde vers les x
positifs.
m_pCanvas->DrawPoint( 1.0f, 0.0f, 0.0f );
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
15 avril 2006 à 00:14
oula, ok, besoin de lecture je crois, je suis a l'ouest complet.En fait je capte pas trop ce concept de caméra, je crois que dans ma tete je suis encore en 2d mais bon je veux faire de la 2d pour le moment, un vertex2f ne serait pas plus approprié, est-ce qu'il permet d'ignorer le concept de placement de caméra??

et puis mon dessin se fait a la base avec des valeurs genre de 0.0 a 0.1, comment faire ds ce cas la, existe-t-il des méthodes prédéfinies ou est-ce que c'est au programmeur de tester et selon ces compétences, calculer?

j v test.
, merci bien de m'aider


@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 avril 2006 à 00:23
J'ai pas trop le temps de t'expliquer ce que n'importe quel tutoriel opengl t'apprendra.

Le plus simple est donc que tu lises toi meme des docs.

Pour ton cadrage, va voir du coté de glViewport.
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
15 avril 2006 à 00:35
lol, ok, t'inkiete, je suis pas du genre a quémander d'ailleurs j'aime pas ça, mis a part ça, ben je vais me lire un petit tuto complet je crois, parceque la je m'empresse un peu peut etre, mais bon, c'est déja pas mal j' arrive déja a dessiner des formes basiques, c'est un bon début, mais moi c'est pas du tout pour faire de la 3d genre jeux et tout ça!! j'aime pas vraiment ça, mais plutot pour des aplis multimédia, enfin, cette histoire de threads ça m'enrage un peu, j'ai essayé avec pleins de valeurs, impossible de voir ce satané point, y a -t-il un moyen de savoir ou il se trouve dans l'espace? par debuggueur ou autre?



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 avril 2006 à 00:39
Le point se trouve la ou tu l'as mis. Nul part d'ailleurs.
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
15 avril 2006 à 00:42
mdr, c'est sur !!!!!lol, mais je me demande toujours si ma fonction est bien executée , ya un moyen de verifier que tel pixel est a telle position? car la position je la conai vu que je la definie, enfin, si tu penses que c'est sur que mon point est bien imprimé quelque part ds l'espace, ben je vais continuer mes investiqations



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
15 avril 2006 à 00:53
bon, c'est clair c'est zarb, je passe le meme point dans le paintEvent et dans le thread et celui du paintEvent marche, mais pas celui du thread; l'un sans l'autre bien sur!

je sais pa koi faire avec cette story........



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
Rejoignez-nous