IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

affichage 2D et 3D openGl/SDL


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut affichage 2D et 3D openGl/SDL
    bonjour,
    mon petit problème est que je fait un jeu en 3D, mais j'aurai voulut afficher un image 2D a l'écran sur la fenêtre ... une image qui est afficher comme si on fessait un application seulement 2D
    ...
    je travail en c++ , avec opengl et SDL

  2. #2
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Bonjour,

    Alors, voici la boucle de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /* Mode 3D */
    glMatrixMode(GL_PROJECTION);
     
    glLoadIdentity();
     
    gluPerspective( 45.0f,800.0f/600.0f, 0.1f, 500.0f );
     
    glMatrixMode(GL_MODELVIEW);
     
    glLoadIdentity();
     
     
     
    /* Dessin des choses 3D ici */
     
    ....
     
     
    /* Mode 2D */
    glLoadIdentity();
     
    glMatrixMode(GL_PROJECTION);
     
    glLoadIdentity();
     
    gluOrtho2D( 0, 800, 600 0 );
     
    /* Dessin des choses 2D ici */
     
    ... Dessin de l'image

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    le problème c'est que l'image en 3D disparait , a moin que c'est moi qui ai fait un fausse manip...

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bjr,

    Citation Envoyé par toto62 Voir le message
    le problème c'est que l'image en 3D disparait , a moin que c'est moi qui ai fait un fausse manip...
    N'y aurait-il pas un glClear de trop avant le "passage en 2D"??

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    je n'en ai que 1 , en début de la boucle
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    boucle princpale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    while(true){
            glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    	glMatrixMode( GL_MODELVIEW );
    	glLoadIdentity( );
     
           /********************************************
           **CODE DE GESTION DES EVENEMENTS ECT ***********
           ********************************************/
     
           affichage3D();
           affichage2D();
     
    }
    fonction affichage2D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    void affichage2D()
    {
    	glLoadIdentity();
     
    	glMatrixMode(GL_PROJECTION);
     
    	glLoadIdentity();
     
    	gluOrtho2D( 0, 640, 480 ,0 );
     
     
    	//glClear(GL_COLOR_BUFFER_BIT);
    	 glColor3ub(0,0,255);
        glBegin(GL_QUADS);
    		 glVertex2d(0,-1);
    		glVertex2d(0,1);
    		glVertex2d(2,1);
    		glVertex2d(2,-1);
        glEnd();
     
    }
    j'ais retirer le glClear avant le glBegin ...
    mais rien y fait...

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 633
    Points
    219 633
    Billets dans le blog
    125
    Par défaut
    La dernière fois que l'on m'a expliqué comment faire de la 3D avec de la 2D on m'a dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    glDisable(GL_DEPTH);
    Begin2D();
        pBackgroundTex->Blit2D();
    End2D();
     
    glEnable(GL_DEPTH);
    Begin3D();
    ...
    ma scène 3D
    ...
    End3D();
     
    glEnable(GL_BLEND);
    Begin2D();
    ...
    2D transparente
    ...
    End2D();
    Sachant que c'est surtout un jeu de transparence, et de test de profondeur.
    Les Begin(), c'est juste des fonctions pour mettre les matrices en ordre.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    j'ai un embryon de solution ...
    j'ai réussi a changer la couleur du fond mais pas a le metre transparent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    void Fenetre::afficher2D()
    {
    	glLoadIdentity();
     
    	glMatrixMode(GL_PROJECTION);
     
    	glLoadIdentity();
     
    	gluOrtho2D( 0, 640,0, 480 );
     
    	glEnable(GL_BLEND) ;
    	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;  
     
    	glTranslated(50,50,0);
            //change le couleur du fond , mais ne le met pas transparent
    	glClearColor(.5,.5,.5,0);
    	glColor4f(1,0,0,1);
    	glTranslated(10,10,0);
    	glBegin(GL_QUADS);
        glVertex2d(0,-100/2);
        glVertex2d(0,100/2);
        glVertex2d(100,100/2);
        glVertex2d(100,-100/2);
        glEnd();
     
     
    }

Discussions similaires

  1. [openGL/SDL] InputBox, comment faire?
    Par Naelhem dans le forum OpenGL
    Réponses: 4
    Dernier message: 22/10/2006, 00h01
  2. Probleme d'affichage OPENGL/SDL
    Par black.out dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/07/2006, 12h39
  3. Problème d'affichage d'un sprite avec SDL
    Par youp_db dans le forum SDL
    Réponses: 1
    Dernier message: 11/02/2006, 18h08
  4. texture opengl-sdl
    Par ffomnislash dans le forum OpenGL
    Réponses: 20
    Dernier message: 21/07/2005, 12h14
  5. Affichage de données en OpenGL
    Par bennnun dans le forum OpenGL
    Réponses: 6
    Dernier message: 10/05/2005, 02h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo