CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question OpenGL / GLUT

CYBER_BOB
CYBER_BOB
Niveau 10
12 décembre 2003 à 19:49:17

Salut a tous,
voila je pose une question simple est-ce que GLUT est multiplateforme?

CYBER_BOB
CYBER_BOB
Niveau 10
12 décembre 2003 à 19:51:36

et je voudrais aussi avoir quelques info sur la fonction:

glutMainLoop();

Merci par avance...

Manest2
Manest2
Niveau 9
12 décembre 2003 à 20:37:04

Oui glut est multiplateforme.

pour glutMainLoop() c´est tres simple. Tu le place apres avoir declaré tous tes callback ( les fonction de la forme glutXXXFunc(), les XXX changeant selon la fonction) Ces callback servent a gerer tout ce qui peut se passer sur la fenetre ( redimentionnement, appuyer sur une touche, mouvement de souris etc...) et c´est le callback correspondant a l´evenement qui est appelé.
Bon est bien glutMainLoop c´est en fait une sorte de boucle qui va " ecouter" les evenement qui se passent et qui va appeler le callback corespondant.

Le seul probleme c´est que la vitesse de boucle depend du pc. Elle est variable, il faut donc faire gaffe.

JeanYvesYves
JeanYvesYves
Niveau 10
13 décembre 2003 à 00:40:01

Alors d´accord avec manest2, rien a rajouter sur glutmainloop, juste dire que c´est simplement la boucle principale, ça tourne sans cesse.

mais je tiens a rajouter qu´il est facile de faire en sorte que la vitesse du PC n´intervienne pas :

Il suffit de gérer les animations sur le temps et non le nombre de frame par seconde :

au lieu de dire qu´a chaque appel, le sprite avance de 1 pixel, il suffit de lui dire d´avancer de X pixels par seconde.
des fonctions de récupération du temps sont dispo, et te permettent de récupérer le temps a la millieme de seconde pres pour calculer cela.
A chaque nouvelle boucle, tu compares le chrono a celui de la frame précédente, pour connaitre le temps passé, et par une simple regle de 3, tu sais de combien faire avancer ton sprite pour cette frame la.

Derriere, la puissance du PC fera uniquement une image plus fluide, mais la vitesse du jeu restera la meme.

certains utilisent meme le timer pour plafonner le nombre de FPS : ce qui est normalment défini synchronisé avec le balayage par glflush

CYBER_BOB
CYBER_BOB
Niveau 10
13 décembre 2003 à 10:26:01

merci pour vos reponses... pour glutMainLoop(), je n´étais pas trop sur alors j´ai posé la question... mais j´ai une autre question si GLUT est multiplateforme pourquoi lorsque j´écris le programme suivant:

  1. include " windows.h"
  2. include " gl/gl.h"
  3. include " gl/glut.h"

void Display();

int main(int argc, char** argv)
{
glutInit(&, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(50, 50);
glutCreateWindow("Fenetre OpenGL");
glutDisplayFunc(Display);
glutMainLoop();
return 0;
}

void Display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}

pourquoi si j´enlévé le fichier " windows.h" le programme refuse d´être compiler... cela signifie que ce programme ne marche alors que sous Windows, non?

gollumkawder
gollumkawder
Niveau 10
13 décembre 2003 à 12:15:25

>cela signifie que ce programme ne marche alors que sous Windows, non?

oui et non, si tu veux faire tourner ce prog sous une autre plate forme il faudra rajouter des trucs, maintenant la lib windows je ne sais plus si elle est faite pour faire tourner sous win ou bien seulement gerer les fenetre et tout le tintouin

kookii
kookii
Niveau 4
13 décembre 2003 à 12:24:46

Essaye de créer ton projet pour le mode console. Normalement tu n´as pas besoin de windows.h

JeanYvesYves
JeanYvesYves
Niveau 10
13 décembre 2003 à 13:03:03

Oui, ça doit venir du mode console :avec GLUT, meme si tu fais du graphisme, faut créer en mode console : C derriere la console qui crée la fenetre graphique

dis nous si ça marche

Boudyou
Boudyou
Niveau 4
13 décembre 2003 à 15:40:12

Oui, en effet, ton problème doit bien venir du mode console car ça devrait marcher sans le " windows.h".
Par contre, un petit conseil vu que tu débutes en OpenGL. Plutôt que d´utiliser GLUT ( qui est très bien mais le projet est arrêté depuis pas mal de temps), je te conseille plutôt de regarder du côté de SDL ( http://www.libsdl.org/index.php ), qui te sera sûrement plus utile que GLUT lorsque tu voudras créer des jeux.
Et pour bien apprendre l´OpenGL, il faut absolument regarder les tutoriaux NeHe sur http://nehe.gamedev.net/, c´est la meilleur façon d´apprendre.

CYBER_BOB
CYBER_BOB
Niveau 10
13 décembre 2003 à 21:47:18

pour info le programme utilisant GLUT a été créé en mode console, mais si j´enleve le fichier " windows.h" -> erreur...

pour sdl, je viens de prendre un tuto qui m´a l´air pas mal et je vais essayer de m´y mettre... mais j´aimerai quand meme savoir pour GLUT...

JeanYvesYves
JeanYvesYves
Niveau 10
14 décembre 2003 à 01:30:07

Quel compilateur utilises tu ?

je ne vois pas d´ou ça peut venir !

Boudyou
Boudyou
Niveau 4
14 décembre 2003 à 12:25:58

Ouaih, c´est bizarre. Est-ce que tu as bien vérifié dans ton projet que tu n´utilises pas les MFC ? Si tu es sous Visual C++ 6, vas dans dans Project->Settings et dans l´onglet General, vérifie bien que " Not Using MFC" est bien choisi dans l´option Microsoft Foundation Classes.

maskware
maskware
Niveau 8
14 décembre 2003 à 15:13:10

Non, le probleme ne vient pas de glut mais de gl.h qui a besoin de certaines definitions contenues dans windows.h et gdi.h. Mais tu sais, quand tu fais #include < gl/glut.h>, tu inclus egalement gl.u et glu.h, donc pas la peine de les ré-inclure :)

CYBER_BOB
CYBER_BOB
Niveau 10
14 décembre 2003 à 20:30:51

non je ne savais pas, mais si je veux faire le meme programme pour tourner sous Linux, qu´est ce qu´il faut que je fasse?

GL_kpook
GL_kpook
Niveau 4
14 décembre 2003 à 21:08:22

glut est compatible sous linux, non pas la peine d´inclure window.h car déclaré dans le header glut.h.

Pour ton problème faudrai nous donner ne message d´erreur ET le compilo due tu utilises!

Si tu utilises opengl+glut, le code est multi-plateforme.

Manest2
Manest2
Niveau 9
16 décembre 2003 à 16:00:50

A priori au lieu de

  1. include " windows.h"
  2. include " gl/gl.h"
  3. include " gl/glut.h"

il suffit d´avoir

  1. include " gl/glut.h"
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment