begin process at 2012 05 27 15:11:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > CREATION DE MENU EN OPEN GL [CODE EN C] [GCC]

CREATION DE MENU EN OPEN GL [CODE EN C] [GCC]


 Information sur la source

Note :
4,33 / 10 - par 3 personnes
4,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OpenGL Niveau :Expert Date de création :15/06/2001 Date de mise à jour :10/10/2001 00:00:00 Vu :21 163

Auteur : Jo

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Bon bah voila maintenant un petit exemple de creation d'un menu en OpenGL

Source

  • #include <GL/glut.h>
  • void menu(unsigned char key, int x, int y)
  • {
  • //Bon bah ici je pense que vous aurez compris
  • switch(key)
  • {
  • case 'q':
  • exit(0);
  • break;
  • }
  • }
  • void gere_menu(int value)
  • {
  • menu(value, 0, 0);
  • //Envoie la valeur recu a la fonction menu
  • //si par exemple en suivant notre exemple l'item 'Quitter' a ete cliquer
  • //la valeur qui sera envoyr a la fonction menu sera ?
  • //q biensur ;-)
  • }
  • int main(int argc, char **argv)
  • {
  • glutInit(&argc, argv);
  • /*ouverture de la fenetre avec tampon de profondeur (Z-Buffer) => GLUT_DEPTH */
  • glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  • glutInitWindowSize(500, 500);
  • glutCreateWindow("Fenetre OpenGL pour tester les menus");
  • //Cette fonction est un peu comme glutKeyboarFunc(); ou glutMouseFunc();
  • //elle permet de choisir la fonction qui gerera le menu
  • glutCreateMenu(gere_menu);
  • //Cela ajoute un Item au menu, avec l'intituler 'Quitter' et la valeur 'q'
  • //en fait cela a pour effet d'envoyer le signal q a la fonction gere_menu();
  • //lorque le click sur l'Item Quitter aura ete detecter
  • glutAddMenuEntry("Quitter", 'q');
  • //La fonction glutAttachMenu(); indique d'ou doit etre appeller le menu, dans notre exemple
  • //j'ai choisi d'appeller le menu depuis le bouton droit de la souris, mais vous pouvez aussi
  • //faire ca avec une touhe de fonction du clavier (voir plus haut touches du claver)
  • glutAttachMenu(GLUT_RIGHT_BUTTON);
  • }
#include <GL/glut.h>

void menu(unsigned char key, int x, int y)
{
    //Bon bah ici je pense que vous aurez compris
    switch(key)
    {
        case 'q':
	     exit(0);
	     break;
    }
}


void gere_menu(int value)
{
      menu(value, 0, 0);
      //Envoie la valeur recu a la fonction menu
      //si par exemple en suivant notre exemple l'item 'Quitter' a ete cliquer
      //la valeur qui sera envoyr a la fonction menu sera ?
      //q biensur ;-)
}

int main(int argc, char **argv)
{
      glutInit(&argc, argv);
     /*ouverture de la fenetre avec tampon de profondeur (Z-Buffer) => GLUT_DEPTH */
     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
     glutInitWindowSize(500, 500); 
     glutCreateWindow("Fenetre OpenGL pour tester les menus");
      
      //Cette fonction est un peu comme glutKeyboarFunc(); ou glutMouseFunc();
      //elle permet de choisir la fonction qui gerera le menu
      glutCreateMenu(gere_menu); 
      //Cela ajoute un Item au menu, avec l'intituler 'Quitter' et la valeur 'q'
      //en fait cela a pour effet d'envoyer le signal q a la fonction gere_menu(); 
      //lorque le click sur l'Item Quitter aura ete detecter
      glutAddMenuEntry("Quitter", 'q');
      //La fonction glutAttachMenu(); indique d'ou doit etre appeller le menu, dans notre exemple
      //j'ai choisi d'appeller le menu depuis le bouton droit de la souris, mais vous pouvez aussi
      //faire ca avec une touhe de fonction du clavier (voir plus haut touches du claver)
      glutAttachMenu(GLUT_RIGHT_BUTTON);
}   



 Sources du même auteur

Source avec Zip [G++] [CODE C++] BOTBATTLE
Source avec Zip [G++] [CODE C++] SERVER.CFG GENERATOR POUR COUNTER-STRIKE
LA CARTE AU TRESOR VERSION 0.3 [CODE EN C++] [G++]
Source avec une capture CLIENT/SERVER [CODE EN C] [GCC]
CREATION DE CLASSE [CODE EN C++] [G++]

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

Commentaires et avis

Commentaire de Sardinoman le 03/11/2002 19:05:56

AKrilium a mon avis c parce ke t as oublié d inclure les library : glut32, opengl32, glu32

Commentaire de Kishrem le 14/11/2002 16:02:46

J arrive pas à le compiler :(
pourtant j ai bien mis glut32.lib, opengl32.lib et glu32.lib.
J ai aussi glut.h
Le compilateur me mets :
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/Menu.exe : fatal error LNK1120: 1 unresolved externals

Je possède Visual C++ 6.0

Quelqun pour m aider ? :(
Merci d'avance ;)

Commentaire de weed le 30/12/2002 00:11:28

ce qui est amusant moi ca marche sous borland pr compiler mais je vois pas de fenetre

Commentaire de weed le 30/12/2002 00:11:39

ce qui est amusant moi ca marche sous borland pr compiler mais je vois pas de fenetre

Commentaire de bouba le 11/01/2003 23:41:11

Bon, j'ai quelques critiques a propos de ce code, dabord tu déclare ta fonction
main comme devant retourner un int et ya pas de return 0;
Ensuite le programme n'affiche pas de fenêtre, normal! Ya pas de glutMainLoop();
Autre chose je ne vois pas a quoi sert cet appel ici:
     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
Voici ce qu'il faut faire pour afficher la fenêtre:
void gere_menu(int value)
{
        menu(value, 0, 0);
}

void display()
{
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}

int main(int argc, char **argv)
{
        glutInit(&argc, argv);
        glutInitWindowSize(500, 500);
        glutCreateWindow("Fenetre OpenGL pour tester les menus");
        glutDisplayFunc(display);
        glutCreateMenu(gere_menu);
        glutAddMenuEntry("Quitter", 'q');
        glutAttachMenu(GLUT_RIGHT_BUTTON);
        glutMainLoop();
        return 0;
}  

Bon, même avec ces modifs y'a pas de menu, je débute moi aussi en OpenGL alors je sais pas encore faire les menus.
Jo, excuse d'être si critique mais pourrais tu faire que ton code affiche un menu ?
Alé bonne prog.

Commentaire de bouba le 11/01/2003 23:59:39

Bon le code que j'ai proposé marche c bon, j'avais fé une erreur !

Commentaire de Percussio le 22/05/2003 16:55:57

Sardinoman g le même problème que AKriLium et pourtant toutes les librairies et les includes sont biens config(...selon moi!)?

Commentaire de cppdupdup34 le 06/12/2003 23:10:52

utile et bien commenté

Commentaire de odrade le 22/03/2004 15:30:48

hello. J'utilise Borland C++ Builder 5.

A la compilation, j'ai :
[C++ Erreur] Unit1.cpp(27): E2034 Impossible de convertir
'void (* (_closure )())()' en 'void (*)()'

A la ligne :
glutDisplayFunc(display);

Avec :
void TForm1:display()
{
    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
}

Et aussi que le "glutInit(&argc, argv);" se fait avec argc et argv définit par le WinMain :

char** argv;
int argc;
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR argv, int argc)
{
    try
    {
         Application-&gt;Initialize();    
         Application-&gt;CreateForm(__classid(TForm1), &Form1);
         Application-&gt;Run();
    }
    catch (Exception &exception)
    {
         Application-&gt;ShowException(&exception);
    }
    return 0;
}

La question est :
Le problème vient il du glutInit(&argc, argv);
ou du transtypage à l'appel de glutDisplayFunc(display); (idem pour glutCreateMenu(gere_menu), evidement ...)

Merki ;-)

Commentaire de Dav6215 le 05/07/2004 17:35:48

Bon je veux bien moi ton menu mais pour ce ki n'ont pas glut :p ???
Et si quelqu'un pourrais me dire ou je peux la trouver cette lib :p
Ca serai sympa ;)

Merci bien ;)

Commentaire de Dav6215 le 05/07/2004 17:36:18

Bon je veux bien moi ton menu mais pour ce ki n'ont pas glut :p ???
Et si quelqu'un pourrais me dire ou je peux la trouver cette lib :p
Ca serai sympa ;)

Merci bien ;)

Commentaire de Quicky24 le 01/11/2004 13:36:46

slt pour Dav6215: tu trouveras glut à
www.dil.univ-mrs.fr/~garetta/generique/autres/OGL/
enfin si tu es sur win
quicky24

Commentaire de Ilsundal le 21/04/2006 18:41:41

je travail sous DevC++, et quand je compile, ca me met la gome de message d'erreurs :

[Linker error] undefined reference to 'glutInitDisplayMode@4'

et ca me met ca pour tout les truc glutInit...

Commentaire de rainiou le 28/06/2006 11:56:04

En tout cas, ARTooKit n'a pas l'air d'aimer! je vais essayer de deplacer le code, mais des qu'il me reconnait un pattern, et bien ca plante ;)

Commentaire de souf_ le 23/08/2006 14:46:13

salut a tous
j'ai un probleme aprés avoir impliber glut.lib  j'ai fait ce petit programme sous builder6.0
//---------------------------------------------------------------------------

#include <windows.h>
#include <vcl.h>
#include <Gl\gl.h>
#include <Gl\glu.h>
#include <Gl\glut.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
     glutInit(& argc, argv);

      return 0;
}

mais j'ai eu le probleme suivant

[Linker Error] Unresolved external 'glutInit' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ

merci d'avance

Commentaire de jeron le 22/02/2007 19:17:03

SAlut il suffit d'inclure les bonnes librairies opengl.a dans devcpp/lib et glut.dll dans windows\system32

GLGLUT doit etre remplacer par #include "GL\Glut.h" sinon cela signifie que GLGLUT est dans le repertoire DEvcpp\include\ (c'est peut etre comme ca pour borland)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales