Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : glutDisplayMode [ Archives / OpenGL ] (Drdidji)

lundi 20 mars 2006 à 23:34:11 | glutDisplayMode

Drdidji

bonjour tout le monde j'ai besoin de vous c'est urgent!!!!!!

je programme un jeu de rubik's cube en opengl   donc initialement j'initialise 
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
et puis a un moment donné je veux passer en
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
je ne sais pas quelle fonction utiliser pour changer mon mode et comment
SVP aidez moi c'est urgent
merci d'avance

mardi 21 mars 2006 à 02:07:00 | Re : glutDisplayMode

theneoiceman

Je vois pas l'interet de passer de GLUT_DOUBLE( double buffer, le plus rapide et le plus utilisé couremment) à GLUT_SIMPLE (simple couche graphique, beaucoup moins "beau" quand utilisé par rapport a GLUT_DOUBLE). Reste en GLUT _DOUBLE ca sera très bien je pense quelque soit le projet en opengl que tu entreprends.

De plus, il est à noter que dans les dernieres versions de GLUT, GLUT_RGB et GLUT_RGBA sont strictement équivalents.
Voici le code de glut.h qui confirme ce que je dis (avec les numéros de ligne associés dans mon fichier "glut.h" ):

// ...
/* display mode bit masks */
63 #define GLUT_RGB 0
64 #define GLUT_RGBA GLUT_RGB
// ...


Voilà en espérant avoir été assez clair.
Bonne prog.

Mess with the best, die like the rest

mercredi 22 mars 2006 à 00:33:28 | Re : glutDisplayMode

Drdidji

en fait le probleme qui se pose c'est que je veux que l'utilisateur puissse rentrer son nom
et pour ça j'ai fait un truk vite fais regardes le code ci_dessou
mais je dois l'integrer a une partie qui est initialiser avec un GL_DOUBLE eyt dans ce cas quand l'utulisateur saisis son nom on voit pas les caracteres s'afficher stp esseyes de m'aimer ou de me passer une autre fonction pour la saisie stp
merci d'avance c'est urgent

#include <glut.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<glaux.h>      // Header File For The GLaux Library
#include<gl.h>                            // Header File For The OpenGL32 Library





#define WIDTH 640
#define HEIGHT 480
#define CTOI(C)    (*(int*)&C)
int X=130,Y=WIDTH/1.5;            //coordonnées  de l'affichage
char nom[15];             //un pointeur vers un  tableau qui contien le nom
int n=0;         //l'emblacement ans le tableau du nom              
 
int score=1;  //temporaire juste pour tester ajouterscore en attendant de recuperer le score du min du jeu
char nom1[10]="joane";

typedef struct InfoScore{  //structure qui contient le nom et le score d'un joueur
char nom[40];
int score;
}Score;


char chaine[50],chaine1[50];           //tableau qui sauvrede l'ecriture
void DisplayEntrerScore();
void ReshapeEntrerScore(int,int);



void debut2d(unsigned int largeur,unsigned int hauteur);
void fin2d();
int AfficherTexte(float x,float y,char* s);

void  keyboardEntrerScore(unsigned char key, int x, int y);
unsigned int ChargerBMP(char *nom);
void InitialiserScore();

AjouterScore(int score,char* nom);
////////////////////////////////////////////////////////////////////////////

int main( int argc, char *argv[ ])
{
    glutInit(&argc,argv);
    //glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
    //glutInitDisplayMode( GLUT_SINGLE);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
 
    glutInitWindowSize(WIDTH,HEIGHT);
    glutInitWindowPosition(50,50);
    glutCreateWindow("Fenetre OpenGL");
//     init ();
 
    glutDisplayFunc(DisplayEntrerScore);
    glutReshapeFunc(ReshapeEntrerScore);
    glutKeyboardFunc(keyboardEntrerScore);  //spécifie la fonction à appeler lorsqu'une touche est pressée
 
    glutMainLoop(); // lance le gestionnaire glut
    return 0;
}
/*
int init(void)
{



    image[1]= ChargerBMP("rubix.bmp");
   
    glEnable(GL_TEXTURE_2D);      // Enable Texture Mapping ( NEW )
   
     glClearColor(0.3f, 0.5f, 1.0f, 0.6f);                // Couleur du fond de la scene
    glClearDepth(1.0f);                                // Nettoie le Depth Buffer
    glDepthFunc(GL_LEQUAL);                                // Selectionne le Type du Depth Test
    glShadeModel(GL_SMOOTH);                            // active le "Smooth Color Shading"
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);    // Rend la perspective vraiment tres belle
   
   

    glEnable(GL_DEPTH_TEST);    // active le test de profondeur
   

    return 1;
}

*/
/*
la fonction qui ecrit les noms dans le fichier score.txt
.le probleme c'est qu'il faut pas ecraser ce qui existe deja
.rajouter aussi le score qui  va etre recuperer a la fin d'une partie
*/
/*
void SauvgarderFichier(){

    FILE* fichier;
   




    fichier=fopen("score.txt","a+");
    if(!fichier)
printf("erreur lors de louverture du fichier\n");

fprintf(fichier,"\n");
       fprintf(fichier,"%s",nom);

    fclose(fichier);
       
}

*/
void debut2d(unsigned int largeur,unsigned int hauteur)
{
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0,largeur,hauteur,0,1,-1);
}

void fin2d()
{
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
}

int AfficherTexte(float x,float y,char* s)
{
    int i,b;
    glColor3f(1,1,1);
    if(s==NULL)
        return 0;

     i=strlen(s);
    glRasterPos2d(x, y);
    for(b=0; b<i; b++)
        glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (s[b]));
    return 1;
}


unsigned int ChargerBMP(char *nom)
{
    unsigned char    *Data;
    FILE            *f = NULL;
    unsigned char    header[0x36];
    GLuint            DataPos,DataSize;
    unsigned int    Name, h,w;
    unsigned char    t;
    unsigned int    x;

    Name = 0;

    f = fopen(nom,"rb");
    if(!f)
    {
        //cout << "Impossible d'ouvrir " << nom << endl;
        return 0;
    }

    // lit le header du fichier
    if( fread(header,1,0x36,f) != 0x36 )
    {
    //    cout << "Impossible de lire " << nom << endl;
        fclose(f);
        return 0;
    }

    if(header[0]!='B' || header[1]!='M')
    {
    //    cout << nom << " n'est pas un BMP valide." << endl;;
        fclose(f);
        return 0;
    }

    if (CTOI(header[0x1E])!=0 || CTOI(header[0x1C])!=24)
    {
        printf("probleme !\n");
        fclose(f);
        return 0;
    }

    //Récupère les infos du fichier
    DataPos            = CTOI(header[0x0A]);
    DataSize        = CTOI(header[0x22]);
    //Récupère les infos de l'image
    w            = CTOI(header[0x12]);
    h            = CTOI(header[0x16]);   

    //!!!!
    if(DataSize==0) DataSize=w*h*3;
    if(DataPos==0)  DataPos=0x36;

    //Charge l'image
    fseek(f,DataPos,0);

    Data = (unsigned char *)malloc(DataSize * sizeof(unsigned char));
    if(!Data)
    {
        fclose(f);
        return 0;
    }
   
    if(fread(Data,1,DataSize,f)!=DataSize)
    {
        free(Data);
        fclose(f);
        return 0;
    }
   
    fclose(f);

    //Inverse R et B
    for(x=0;x<w*h;x++)
    {
        t=Data[x*3];
        Data[x*3]=Data[x*3+2];
        Data[x*3+2]=t;
    }

    glPixelStorei(GL_UNPACK_ALIGNMENT,1);
    glGenTextures(1, &Name);
    glBindTexture(GL_TEXTURE_2D, Name);
    gluBuild2DMipmaps(    GL_TEXTURE_2D,
                        3,
                        w,
                        h,
                        GL_RGB,
                        GL_UNSIGNED_BYTE,
                        Data );
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);

    free(Data);

    return Name;
}


void DisplayEntrerScore()
{
   
//glutDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    
     static float a=0;
     char chaine[50];

 
   
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);  // nettoi les buffers d'affichages
    glLoadIdentity();                                    // crée une matrice vierge

   

   
debut2d(HEIGHT,WIDTH);
sprintf(chaine,"ENTRER VOTRE NOM :");
AfficherTexte(10,WIDTH/1.5,chaine);
sprintf(chaine,"VOTRE SCORE EST DE  :");
AfficherTexte(10,WIDTH/1.5+20,chaine);
sprintf(chaine,"A BIENTOT ");
AfficherTexte(200,WIDTH/1.5+100,chaine);

fin2d();
glFlush();

   glutSwapBuffers ();
//glFlush();

  
      



   
 
}

void ReshapeEntrerScore(int w,int h)
{
    float L; // Longueur entre les 2 plans de coupe verticaux
    float H; // Hauteur entre les 2 plans de coupe horizontaux
 
    if (w<=h)
    {
        H=(GLfloat) (10*h/w);
        L=10.0;
    }
    else
    {
        H=10.0;
        L=(GLfloat) (10*w/h);
    }
    gluOrtho2D(-L/2,L/2,-H/2,H/2); // définition de la projection
}



void keyboardEntrerScore (unsigned char key, int x, int y)
{
//int n=0;
//char nom[11];
//char chaine[50];
    glClearColor(1,1,1,1);   
switch (key) {
      case 'a':
        case 'A':
                     
     
 debut2d(HEIGHT,WIDTH);
AfficherTexte(X,Y,"A");
fin2d();
X=X+7;
 glFlush();
  nom[n]='A';
          n=n+1;







          //glFlush(); // affichage de la scène
         
         break;
        case 'b':
        case 'B':
                     
     
 debut2d(HEIGHT,WIDTH);
AfficherTexte(X,Y,"B");
fin2d();
X=X+7;

       
          glFlush(); // affichage de la scène
                     /*
          nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));

         */
          nom[n]='B';
          n=n+1;
         break;
    case 'c':
        case 'C':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"C");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='C';
          n=n+1;
         break;
    case 'd':
        case 'D':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"D");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
       
          /*
          nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='D';
          n=n+1;
         break;

    case 'e':
        case 'E':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"E");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='E';
          n=n+1;
         break;
    case 'f':
        case 'F':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"F");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='F';
          n=n+1;
         break;
     
    case 'g':
        case 'G':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"G");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='G';
          n=n+1;
         break;
         case 'h':
        case 'H':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"H");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
                     /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='H';
          n=n+1;
         break;
             case 'i':
        case 'I':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"I");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='I';
          n=n+1;
         break;
             case 'j':
        case 'J':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"J");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='J';
          n=n+1;
         break;
             case 'k':
        case 'K':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"K");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='K';
          n=n+1;
         break;
             case 'l':
        case 'L':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"L");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='L';
          n=n+1;
         break;
             case 'm':
        case 'M':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"M");
X=X+7;
fin2d();
       

          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='M';
          n=n+1;
         break;
             case 'n':
        case 'N':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"N");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='N';
          n=n+1;
         break;
             case 'o':
        case 'O':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"O");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='O';
          n=n+1;
         break;
             case 'p':
        case 'P':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"P");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
         
         break;
             case 'q':
        case 'Q':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"Q");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='Q';
          n=n+1;
         break;
             case 'r':
        case 'R':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"R");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
         */
           nom[n]='R';
          n=n+1;
          break;
             case 's':
        case 'S':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"S");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='S';
          n=n+1;
         break;
             case 't':
        case 'T':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"T");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='T';
          n=n+1;
         break;
             case 'u':
        case 'U':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"U");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='U';
          n=n+1;
         break;
             case 'v':
        case 'V':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"V");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='V';
          n=n+1;
         break;
             case 'w':
        case 'W':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"W");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='W';
          n=n+1;
         break;
             case 'x':
        case 'X':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"X");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='X';
          n=n+1;
         break;
             case 'y':
        case 'Y':
                     
     
 debut2d(HEIGHT,WIDTH);

AfficherTexte(X,Y,"Y");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
          /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='Y';
          n=n+1;
         break;
             case 'z':
        case 'Z':
                     
     
 debut2d(HEIGHT,WIDTH);
//printf("le score est ");
AfficherTexte(X,Y,"Z");
X=X+7;
fin2d();
       
          glFlush(); // affichage de la scène
                     /*
         nom=(char *)realloc(nom,sizeof(char));
if ( chaine==NULL ) {
printf("Erreur d'allocation mémoire !!!");
exit(2);
}
scanf( "%c", nom+strlen(nom));
*/
           nom[n]='Z';
          n=n+1;
         break;
      case 27:


         exit(0);
         break;

      default:
         
AjouterScore(score,nom);
         break;
}
}

/*fonction qui initialise le fichier dans le cas ou il est vide */

void InitialiserScore(){
int i;
FILE *f;
Score tab_structure[10];
f=fopen("score.txt","r");

if(f==NULL){ ;
f=fopen("score.txt","w");

for(i=0;i<10;i++)
{
strcpy(tab_structure[i].nom,"nacer");
tab_structure[i].score=i*4;

}

for(i=0;i<10;i++)
  fwrite(&tab_structure[i],sizeof(Score),1,f);


fclose(f);


}

else
fclose(f);

}


/*fonction qui ajoute un score et le positionne selon sa valeur*/

AjouterScore(int score,char* nom)
{
  FILE *f;
  int i=0,j,k,temp;
  char t[15];
  Score tab_structure[10];
 
  nom[14]='\0';
 
  InitialiserScore();


  f=fopen("score.txt","r");

  while(!feof(f) && i<10)
  {

    fread(&tab_structure[i],sizeof(Score),1,f);
    i++;
  }
  fclose(f);

if (score<tab_structure[9].score)
{
tab_structure[9].score=score;
strcpy(tab_structure[9].nom,nom);
}
  for (k=0;k<9;k++)
   for(j=8;j>=k;j--)
    if(tab_structure[j+1].score<tab_structure[j].score){
     //score
     temp=tab_structure[j+1].score;
     tab_structure[j+1].score=tab_structure[j].score;
     tab_structure[j].score=temp;
     //nom
     strcpy(t,tab_structure[j+1].nom);
     strcpy(tab_structure[j+1].nom,tab_structure[j].nom);
     strcpy(tab_structure[j].nom,t);
     }

f=fopen("score.txt","w");


for(i=0;i<10;i++)
  fwrite(&tab_structure[i],sizeof(Score),1,f);



fclose(f);


}




mercredi 22 mars 2006 à 03:56:08 | Re : glutDisplayMode

theneoiceman

Bon, j'ai fait un programme tres minimaliste de saisie de caracteres sous opengl utilisant GLT.
Je l'ai fait assez rapidement mais j'esp^ère qu'il sera clair malgré tout.
Reagrde si tu peux l'utiliser pour ton code.
(le copier coller du code dans ce message rend le resultat tres illisible mais tu pourras faire la mise en forme que tu veux en reprenant ce code dans ton IDE favori)


#include <windows.h>

#include <iostream>

#include <gl/glut.h>

using namespace std;

#define _CRT_SECURE_NO_DEPRECATE // pour la compatibilité avec VS 2005

#define WIDTH 640

#define HEIGHT 480

#define MAXLENGTH 20

char chaine[MAXLENGTH];

int numFenetre=0;

int nbCaracTapes=0;

void foncDisplay(void);

void foncKeyboard(unsigned char,int,int);

void afficherTexte(char*,float,float);

void foncIdle(void);

int main(int argc,char **argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutInitWindowSize(WIDTH,HEIGHT);

glutInitWindowPosition(50,50);

numFenetre=glutCreateWindow("Fenetre OpenGL");

glutDisplayFunc(foncDisplay);

glutKeyboardFunc(foncKeyboard);

glutIdleFunc(foncIdle); // fonction appelee quand l'ordi n'est pas occupé, utile pour appeler les fonctions de rafraichissement de l'image

// initialisation de la matrice de projection

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrtho(0,WIDTH,0,HEIGHT,-1,1);

glMatrixMode(GL_MODELVIEW);

// ensuite on est pret pour utiliser opengl dans le nouveau repere

// ce code peut etre mis dans la fonction d'affichage directement

// c'est selon le besoin



// initialisation a 0 de la chaine contenant les caracteres qui seront saisis

memset(chaine,0,MAXLENGTH);

glutMainLoop();

return 0;

}

void foncDisplay(void)

{

glClearColor(0.f,0.f,0.f,0.f);

glClear(GL_COLOR_BUFFER_BIT);

glLoadIdentity();

//todo : affichage de ce qu'on veut

afficherTexte("ENTRER VOTRE NOM : ",10,WIDTH/1.5);

// pour gagner en rapidité on evite trop d'appels de fonction tels que strlen etc.

// donc on utilise un compteur global du nombres d'appuis sur touche faits (mis a jour dans la

// fonction de gestion du clavier)

if(nbCaracTapes>0)

afficherTexte(chaine,200,WIDTH/1.5);

glutSwapBuffers();

}

void foncIdle(void)

{

glutPostRedisplay(); // on force le rafraichissement si l'ordi n'est pas occupé par autre chose

}

void foncKeyboard(unsigned char c,int x,int y)

{

if(c==27) // ECHAP

{

glutDestroyWindow(numFenetre);

exit(0);

}

// on evite les erreurs de segmentation en verifiant qu'on a encore la place

// d'ajouter une lettre, si oui on ajoute

if(nbCaracTapes<(MAXLENGTH-1))

{

chaine[nbCaracTapes]=c;

++nbCaracTapes;

}

}

void afficherTexte(char* texte,float x,float y)

{

if(texte)

{

int longueurTexte=(int)strlen(texte);

float decalage=10.f;

float decX=x;

glPushMatrix();

glLoadIdentity();

glColor3f(1.f,1.f,1.f);

for(int i=0;i<longueurTexte;i++)

{

glRasterPos2f(decX,y);

glutBitmapCharacter(GLUT_BITMAP_8_BY_13,texte[i]);

decX+=decalage;

}

glPopMatrix();

}

}



Voilà en espérant que ca va t'aider.
Bonne prog.
++

Mess with the best, die like the rest



Cette discussion est classé dans : urgent, glut, glutdisplaymode, glutinitdisplaymode


Répondre à ce message

Sujets en rapport avec ce message

AIDEEEEE URGENT!!!!!!!!!!!!!! [ par C++ ] #include void main(){char MonChar[10000];cin>>MonChar;if(MonChar=="Cacher AOL") { cout } else{cout<<"Vous avez pas Taper la fonction correcte lol comment faire des calculs et dessiner en meme temps avec GLUT [ par nabil ] SALUT,j'ai le probleme suivant : je veux lire des coordonnées des points qui se trouve dans fichier et de faire un petit calcul et d'afficher des poin Glut et Visual Studio 6 [ par Paul ] C'est moi ou il s'aime vraiment pas ces 2 là ?Est-ce que quelqu'un a réussi à faire marcher "EXEMPLE SIMPLE OPENGL [CODE EN C]" sous VC++6 ?Je me retr URGENT : Qqn peut-il m'envoyer la bibli "registry.hpp" svp? Merci. [ par JAYJAY ] URGENT : Qqn peut-il m'envoyer la bibli "registry.hpp" svp? Merci. Pb avec Glut sous Visual C++ [ par Yoann ] Bonjour !Je viens de me mettre à OpenGL avec Glut, mais j'ai un petit problème. En effet, quand je compile un exemple, j'ai l'erreur suivante :TestGlu Dev C++ -- et GLUT [ par papier ] !!..Salut..!!Mon probleme ,c'est ke quand je compile mon prog (open gl et glut) il me met 0 errors mais il ne veut po me le lancer , et le linker outp Pb avec Glut sous VC++ et Dev [ par mederic ] Je ne sais pas si ça vient de mon include ou autre chose. Mais je n'arrive pas executer un exemple simple sur plusieurs compilateurs.Sur VC++, il écri source en c conversion Urgent [ par fleur ] je suis super débutante. Je cherche en C un code pour convertir un décimal en hexadécimal.Je vous remercie d'avance pour votre aide...j'en ai vraiment tutorial ou code GLUT [ par francky ] SALUT,je débute avec dev c, et j'aimerais créer une interface portable aussi bien sous window que sous linux;mon probleme: j'ai bien trouver glui, mai glut - openGL [ par loss ] Quels sont les fichiers necessaires pour utiliser glut(je compile avec VC++)?Ou est ce que je peux les telecharger?Merci d avance.


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.