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

OpenGL Discussion :

[Débutant] Affichage d'une grille


Sujet :

OpenGL

  1. #21
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    tes résultats m'interresse , donc si tu pouvait les mettre stp :-)
    merci beaucoup

  2. #22
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 787
    Points
    1 787
    Par défaut
    d'accord mais pas avant lundi !

  3. #23
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    ca presse pas
    merci beaucoup

  4. #24
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    bon bah ca marche toujours pas
    voici la nouvelle version du code
    désolé de vous embéter
    mais les débuts c'est toujours difficile :-)
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    void Moteur3D::afficherScene()
    {
     
            dessinerGrille(4);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glLoadIdentity();
     
            //Définir la vue de départ
            gluLookAt ( 10,10, 10, 0, 1, 0, 0, 1, 0 );
            //Changer de buffer
            SDL_GL_SwapBuffers();
     
    }
     
    void Moteur3D::dessinerGrille(int largeur)
    {
            for(int x=-largeur;x<=largeur;x++)
            {
                    glDisable(GL_COLOR_MATERIAL);
                    glEnable(GL_COLOR);
                    glBegin(GL_LINES);
                            glColor4i(255,0,0,0);
     
                            glVertex3d(x,0,-largeur);
                            glVertex3d(x,0,largeur);
     
                            glVertex3d(-largeur,0,x);
                            glVertex3d(largeur,0,x);
     
                            glVertex3d(-largeur,x,0);
                            glVertex3d(largeur,x,0);
     
                            glVertex3d(x,-largeur,0);
                            glVertex3d(x,largeur,0);
     
                    glEnd();
                    //printf("affichage de la grille :  %d  \n",x);
            }
    }
     
    void Moteur3D::initialiserAffichage()
    {
            if(SDL_Init(SDL_INIT_VIDEO)!=0)
            {
                    printf("Initialisation de la vidéo via SDl                              [ERREUR]\n");
                    SDL_Quit();
                    exit(1);
            }
            else
            {
                    printf("Initialisation de la vidéo via SDl                              [OK]\n");
            }
     
            ecran=SDL_SetVideoMode(resX,resY,nbBitParPixel,SDL_HWSURFACE| /*SDL_FULLSCREEN|*/SDL_OPENGL/*|SDL_NOFRAME*/);
            printf("Erreurs SDL : %s\n",SDL_GetError());
     
            SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );          // tell SDL that the GL drawing is going to be double buffered
            SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE,   24);          // size of depth buffer
            SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 0);           // we aren't going to use the stencil buffer
            SDL_GL_SetAttribute( SDL_GL_ACCUM_RED_SIZE, 8);     // this and the next three lines set the bits allocated per pixel -
            SDL_GL_SetAttribute( SDL_GL_ACCUM_GREEN_SIZE, 8);   // - for the accumulation buffer to 0
            SDL_GL_SetAttribute( SDL_GL_ACCUM_BLUE_SIZE, 8);
            SDL_GL_SetAttribute( SDL_GL_ACCUM_ALPHA_SIZE, 8);
     
            if(ecran==NULL)
            {
                    printf("Création de la fenêtre %d x %d x %d                             [ERREUR]\n",resX,resY,nbBitParPixel);
                    SDL_Quit();
                    exit(1);
            }
            else
            {
                    printf("Création de la fenêtre %d x %d x %d                             [OK]\n",resX,resY,nbBitParPixel);
            }
            SDL_WM_SetCaption("Dungeon Hunter","Dungeon Hunter");
     
            glMatrixMode ( GL_PROJECTION );
            glLoadIdentity ( );
     
            if ( resY == 0 )
            { //Eviter la division par zéro
                    resY = 1;
            }
            gluPerspective ( 45, ( float )resX / resY, 0.1, 10000 );
            glMatrixMode ( GL_MODELVIEW );
     
    }
     
     
     
    int main(int argc, char *argv[])
    {
           Moteur3D moteur;
     
     
            printf("Lancement de Dungeon Hunter\n");
            moteur = Moteur3D(640,480,32,100);
     
            moteur.initialiserAffichage();
            for(;;)
            {
                    moteur.afficherScene();
            }
     
     
            return 0;
    }
    qu'est ce que j'ai oublié ?

  5. #25
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 787
    Points
    1 787
    Par défaut
    J'ai remarqué un grosse erreur, ta fonction dessinerGrille doit se trouver APRES ton gluLookat() sinon tu efface avec glClear() (donc c'est comme si t'avais rien affiché) et tu n'est pas dans ton repére caméra donc ça risque pas de marcher .
    petit conseil au passage ton glEnable(GL_COLOR); et ton glDisable(GL_COLOR_MATERIAL) tu les met a l'initialisation du programme.

    Pour ce qui est du double-buffering bafman a raison, il n'est pas necessaire de mettre SDL_DOUBLBUFF dans ton SDL_SetVideoMode() car il est ignoré et par contre faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
    et pourquoi tu a mis en commentaire SDL_OPENGL : : ça risque pas de marcher sans...
    La je suis toujours pas sur mon PC mais lundi (ou dans la semaine, si j'ai pas le temps) je t'enverrai le main de mon programme (ça me forcera à la commenter, au passage), ça devrai t'aider, c'est vrai que c'est pas facile le début
    Il doit pas manquer grand chose pour que ça affiche pourtant...

  6. #26
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    c'est le fullscreen et le noframe qui sont entre commentaire
    parceque avec la boucle infinie
    et en fullscreen
    impossible de terminer le processus

    :-)


    en tout cas merci
    ca marche maintenant impécablement
    c'est vrai que le clear apres avoir dessiner c'était pas très malin

    merci beaucoup a tous
    tu peut quand même toujours m'envoyer ton main je le regarderai avec plaisir
    :-)

    voila
    problème résolu
    la grille s'affiche :-)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. (débutant) aFfichage d'une fenetre en attente
    Par Asnidren dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 17/10/2006, 11h32
  2. [Débutant]Affichage d'une liste de n'importe quoi?
    Par bubu251 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 03/10/2006, 09h57
  3. Réponses: 2
    Dernier message: 20/07/2006, 19h40
  4. Réponses: 3
    Dernier message: 19/07/2006, 10h16
  5. Réponses: 4
    Dernier message: 28/02/2006, 14h25

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