[C] opengl et reseau

opengl et reseau [C] - C++ - Programmation

Marsh Posté le 19-05-2003 à 15:00:52    

bonjour,
 
j ai une "moteur 3D" qui gere un niveau qui doit evoluer en fonctions d infos recus par le reseau (c un jeu en reseau)
j utilise glut pour creer mes fenetres.
glut utilise glutMainLoop(); pour boucler sur les evenenement.
 
or j ai besoin de boucler sur une socket pour recevoir les infos et afficher le nivo.  
(je recoit un char * symbolysant le nivo, je le parse et l affiche en 3D, puis je renv les evenements de deplacement au server ki les traites et me renvoi un char * et ainsi de suite)
 
Le pb est donc ke glutMainLoop dont g besoin pour l affichage m empeche de faire ma bloucle reseau  :(  
 
Y a t-il une solution ?
(fonction ki coupe glutmainloop dans certains cas, changement de la gestion de glut vers SDL ou autre, je suis ouvert a tout :D)


Message édité par Helter-skelter le 19-05-2003 à 15:04:15
Reply

Marsh Posté le 19-05-2003 à 15:00:52   

Reply

Marsh Posté le 19-05-2003 à 15:25:01    

ben un thread qui lit dans ta socket, parse le souc et previent ta gluMainLoop qu'ya de nouvelles donnees ?

Reply

Marsh Posté le 19-05-2003 à 15:29:52    

chrisbk a écrit :

ben un thread qui lit dans ta socket, parse le souc et previent ta gluMainLoop qu'ya de nouvelles donnees ?


je doit faire le proj sous netbsd, et sous netbsd les thread c pas trop ca :-\ (desole, j aurrai du le presiser)

Reply

Marsh Posté le 19-05-2003 à 15:33:30    

Helter-Skelter a écrit :


je doit faire le proj sous netbsd, et sous netbsd les thread c pas trop ca :-\ (desole, j aurrai du le presiser)

un processus alors....

Reply

Marsh Posté le 19-05-2003 à 15:43:26    

harrysauce a écrit :

un processus alors....


g deja un fork plus haut car le server et le client doivent etres dans le meme executable (c l un ou l autre en fct des parametres de lancement de l executable), ca va commence a etre goret si j en rajoutte un (deja ke c limite...)

Reply

Marsh Posté le 19-05-2003 à 15:46:03    

Helter-Skelter a écrit :


g deja un fork plus haut car le server et le client doivent etres dans le meme executable (c l un ou l autre en fct des parametres de lancement de l executable), ca va commence a etre goret si j en rajoutte un (deja ke c limite...)

bof, jamais 2 sans 3 [:ddr555]

Reply

Marsh Posté le 19-05-2003 à 15:55:47    

harrysauce a écrit :

bof, jamais 2 sans 3 [:ddr555]


 :lol:  
ca sera mon exuse a la correction  :D

Reply

Marsh Posté le 19-05-2003 à 15:58:52    

Helter-Skelter a écrit :

bonjour,
 
j ai une "moteur 3D" qui gere un niveau qui doit evoluer en fonctions d infos recus par le reseau (c un jeu en reseau)
j utilise glut pour creer mes fenetres.
glut utilise glutMainLoop(); pour boucler sur les evenenement.
 
or j ai besoin de boucler sur une socket pour recevoir les infos et afficher le nivo.  
(je recoit un char * symbolysant le nivo, je le parse et l affiche en 3D, puis je renv les evenements de deplacement au server ki les traites et me renvoi un char * et ainsi de suite)
 
Le pb est donc ke glutMainLoop dont g besoin pour l affichage m empeche de faire ma bloucle reseau  :(  
 
Y a t-il une solution ?
(fonction ki coupe glutmainloop dans certains cas, changement de la gestion de glut vers SDL ou autre, je suis ouvert a tout :D)


Tu renvoies les événements et tu récupères ton char * à parser et afficher à chaque événement?
Si c'est le cas il suffit de mettre le code réseau dans tes fonctions de gestion des événements non?

Reply

Marsh Posté le 19-05-2003 à 16:08:58    

skeye a écrit :


Tu renvoies les événements et tu récupères ton char * à parser et afficher à chaque événement?
Si c'est le cas il suffit de mettre le code réseau dans tes fonctions de gestion des événements non?


en fait pas vraiment.
il y a une unitee de tmp determine par le seveur et il m env les infos (le char *) com un metronome (avc un ualarm il me semble)
donc pour env les infos ca pose pas de pb de le faire au moment de l event mais pour les recevoir...

Reply

Marsh Posté le 19-05-2003 à 16:14:30    

Helter-Skelter a écrit :


en fait pas vraiment.
il y a une unitee de tmp determine par le seveur et il m env les infos (le char *) com un metronome (avc un ualarm il me semble)
donc pour env les infos ca pose pas de pb de le faire au moment de l event mais pour les recevoir...


Dans ce cas je vois pas d'autre solution que celles citées plus haut...il te faut un autre thread / process...:/

Reply

Marsh Posté le 19-05-2003 à 16:14:30   

Reply

Marsh Posté le 19-05-2003 à 16:21:55    

skeye a écrit :


Dans ce cas je vois pas d'autre solution que celles citées plus haut...il te faut un autre thread / process...:/


Et avc SDL, y a la meme gestion des evenements que pour glut?

Reply

Marsh Posté le 19-05-2003 à 16:24:39    

Helter-Skelter a écrit :


Et avc SDL, y a la meme gestion des evenements que pour glut?


C'est pas tout à fait pareil...par contre je ne me souviens pas exactement le fonctionnement, même s'il me semble que c'est un peu plus flexible à ce niveau.

Reply

Marsh Posté le 19-05-2003 à 16:28:27    

je vais tenter ca, de toute facon je me sert de glut pour creer ma fenetre et gerer mes evnmt point barre, donc migrer vers du sdl ne devrai pas etre trop long. par contre je vais faire qq recherches pour savoir si ca a un interet...

Reply

Marsh Posté le 20-05-2003 à 01:26:17    

probleme resolu.  :)
 
je fait l init de la socket au lancement du client, je recv mon char * dans la fct de display, je le traite et l'affiche, puis je fait les envois de mouvements au serveur dans la fct d'evenements  clavier.
Et le tout boucle avc glutmainloop()  :p  
 
je dis ca paske ca pourra servir a qqn d autre (suis kan meme pas le seul imbecile a faire du glut et du rezal j espere :D ).


Message édité par Helter-skelter le 20-05-2003 à 01:27:54
Reply

Marsh Posté le 20-05-2003 à 07:13:31    

Helter-Skelter a écrit :

probleme resolu.  :)
 
je fait l init de la socket au lancement du client, je recv mon char * dans la fct de display, je le traite et l'affiche, puis je fait les envois de mouvements au serveur dans la fct d'evenements  clavier.
Et le tout boucle avc glutmainloop()  :p  
 
je dis ca paske ca pourra servir a qqn d autre (suis kan meme pas le seul imbecile a faire du glut et du rezal j espere :D ).


Ca bloque pas le raffraichissement?

Reply

Marsh Posté le 20-05-2003 à 10:40:56    

skeye a écrit :


Ca bloque pas le raffraichissement?


g oublie de precise ke g mis un select pour que cette operation soit non blocante.
il update ainsi les donnees tout les X tmp de facon transparente pour l affichage :D


Message édité par Helter-skelter le 20-05-2003 à 10:41:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed