AIDEZ MOI scp problème de texture bmp avec glaux

progundeath Messages postés 7 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 juillet 2003 - 19 juil. 2003 à 13:18
svirpiren Messages postés 29 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 23 février 2011 - 15 janv. 2005 à 19:52
aidez moi svp g un big problème que j'arrive pas à résoudre mais bon je ne suis qu'un newbie d'autres le résoluront en 10 secondes enfin j'espère donc je travaille avec dev-c++ et donc je compile le code que je vais mettre en dessous il n'y a aucune érreur de compilation ni d'édition des liens donc le programme tourne normalement sauf que mon carré n'est pa recouvert de la texture je n'y comprend rien merci si quelqu1 peu m'aider.

code :

#include <GL\glut.h>
#include <GL\glaux.h>
#include <stdio.h>

GLuint texture[1];

AUX_RGBImageRec * ChargeBMP(char nomfichier[])
{
FILE * fichier=NULL;
if(!nomfichier)
{
return NULL;
}
fichier=fopen(nomfichier,"r");
if(!fichier)
{
return NULL;
}
fclose(fichier);
return auxDIBImageLoad(nomfichier);
}

int ChargeTex()
{
int statut=FALSE;
AUX_RGBImageRec * imagetex[1];
if(imagetex[0]=ChargeBMP("truc.bmp"))
{
statut=TRUE;
glGenTextures(1,texture);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imagetex[0]->sizeX, imagetex[0]->sizeY, 0, GL_RGBA,GL_UNSIGNED_BYTE, imagetex[0]->data);
}
return statut;
}

void Dessin()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0,0,1,0,0,-10,0,1,0);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0);glVertex2f(0.25,0.25);
glTexCoord2f(1.0,0.0);glVertex2f(0.75,0.25);
glTexCoord2f(1.0,1.0);glVertex2f(0.75,0.75);
glTexCoord2f(0.0,1.0);glVertex2f(0.25,0.75);
glEnd();
glutSwapBuffers();
}

int Init()
{
if(!ChargeTex())
{
return FALSE;
}
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
return TRUE;
}

void Redim(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,1,0,1,-10,10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

int main(int argc,char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);
glutInitWindowSize(300,300);
glutInitWindowPosition(100,100);
glutCreateWindow("Essai OpenGL");
if(!Init())
{
return 1;
}
glutReshapeFunc(Redim);
glutDisplayFunc(Dessin);
glutMainLoop();
return 0;
}

Progundeath ~ "Programmer until death" >:)

9 réponses

progundeath Messages postés 7 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 juillet 2003
19 juil. 2003 à 13:19
Progundeath ~ "Programmer until death" >:)
0
cs_kawito Messages postés 24 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005
20 juil. 2003 à 18:21
-------------------------------
Réponse au message :
-------------------------------

> aidez moi svp g un big problème que j'arrive pas à résoudre mais bon je ne suis qu'un newbie d'autres le résoluront en 10 secondes enfin j'espère donc je travaille avec dev-c++ et donc je compile le code que je vais mettre en dessous il n'y a aucune érreur de compilation ni d'édition des liens donc le programme tourne normalement sauf que mon carré n'est pa recouvert de la texture je n'y comprend rien merci si quelqu1 peu m'aider.

salut,
voici une fonction qui charge une texture BMP

pour la gestion des bmp

typedef struct
{
BITMAPFILEHEADER bmfHeader;
BITMAPINFOHEADER bmiHeader;
GLubyte *image_data;

} BITMAP_IMAGE;

typedef struct
{
GLubyte *imageData;
GLuint bpp;
GLuint width;
GLuint height;
GLuint texID;
} TextureImage;

par exemple :
declarer une variable (tableau de texture)

TextureImage texture_carte[10];

pour charger la texture :
Charger_texture_bmp(texture_carte, "image.bmp",0);

une fois la texture chargé ,il faut la plaquer sur un quad :

glEnable(GL_TEXTURE_2D);
glEnable(GL_CULL_FACE);
glBindTexture(GL_TEXTURE_2D, texture_bouton[texture_id].texID);
glBegin(GL_QUADS);
/* TEXTURE // RECTANGLE DE DESTINATION */
glTexCoord2d(0, 0);glVertex2d(x, y);
glTexCoord2d(1, 0);glVertex2d(x + largeur, y);
glTexCoord2d(1, 1);glVertex2d(x + largeur,y + hauteur);
glTexCoord2d(0, 1);glVertex2d(x, y + hauteur);
glEnd();
glDisable (GL_TEXTURE_2D);
premier point pour le mappage en bas a gauche du quad,et on tourne dans le sens trigo
4--3
| |
0--1

/**************************************************************************************/
/**************************************************************************************/
/**************** CHARGER UNE TEXTURE A PARTIR D'UN FICHIER BMP 24 bits *************/
/**************************************************************************************/
/**************************************************************************************/

charge un fichier bmp en texture opengl,
le fichier ce trouve dans le repertoire "graphique" par defaut
et on choisit le repertoire final "interface" ou "fondecran" par exemple

aborescence :

repertoire application courante
|
graphique
|
interface:"image.bmp"
|
fondecran
|

void Charger_texture_bmp(TextureImage textureArray[], LPSTR strFileName, int textureID)
{
AUX_RGBImageRec *pBitmap = NULL;
char repertoire_par_defaut[MAX_PATH];

if(!strFileName) // Return from the function if no file name was passed in
return;

/* memoriser le repertoire courant */
getcwd(repertoire_par_defaut,MAX_PATH);
/* selection du repertoire graphique */
chdir(NOM_REPERTOIRE_GRAPHIQUE);
/* selection du repertoire choisit : interface */
chdir(NOM_REPERTOIRE_INTERFACE);

pBitmap = auxDIBImageLoad(strFileName); // Load the bitmap and store the data

if(pBitmap == NULL) // If we can't load the file, quit!
exit(0);

glGenTextures(1, &textureArray[textureID].texID);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, textureArray[textureID].texID);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, pBitmap->sizeX, pBitmap->sizeY, GL_RGB, GL_UNSIGNED_BYTE, pBitmap->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR);

if (pBitmap)
{
if (pBitmap->data)
{
free(pBitmap->data);
}

free(pBitmap);
}
/* reselection du repertoire par defaut (application) */
chdir(repertoire_par_defaut);
}

mais je te conseille d'utiliser le format TGA, qui permet de faire des sprites
car en bmp tu pourra seulement afficher des image carre, avec le TGA tu pourra afficher des sprites.
donc afficher des boutons ovale dans un quad par exemple...

si la texture ne s'affiche pas verifie tes parametres d'initialisation

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
glutInitWindowPosition(0, 0);
0
cs_kawito Messages postés 24 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005
20 juil. 2003 à 18:26
verifie si la taille de l'image et un multiple d'une puissance de 2
256*256 ou 512*512 en pixel
la taille des images bmp doit etre une puissance de 2 imperativement
0
progundeath Messages postés 7 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 juillet 2003
21 juil. 2003 à 15:00
salut kawito et d'abord merci de m'avoir répondu mais je n'arrive toujours pas à texturer mon carré. J'ai suivi ton conseil et g pris une image de 256 sur 256 d'un tutorial sur internet mais sa ne marche toujours pas alor g pris le code source d'un tutorial sur internet que je vais afficher apres sans rien modifier et sa ne marche pas !!! C'est quand meme bizarre que sa marche avec le gars qui a fait le tutorial et que sa ne marche pa avec moi je ni compren rien je suis dessepéré aide moi sil te plai merci d'avance !!

code source du tutorial :

#include <stdio.h>
#include <gl/glut.h>
#include <gl/glu.h>
#include <gl/gl.h>
#include

////////////////////////////////////////////////////////

//Fenêtre GLUT
int Win;
double a=0;
//Fonction d'initialisation
void InitGL();
//Fonction de redimensionnement
void Reshape(int w,int h);
//Fonction de dessin
void Draw();
//LoadBMP : charge une image 24bpp
int LoadBMP(char *File);

//Texture :
GLuint Nom;

////////////////////////////////////////////////////////

int main( int argc, char *argv[ ], char *envp[ ] )
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
Win=glutCreateWindow("Démo Texture");

glutReshapeFunc(Reshape);
glutDisplayFunc(Draw);
InitGL();
glutMainLoop();

return 0;

}

////////////////////////////////////////////////////////
//LoadBMP : charge une image 24bpp
#define EXIT {fclose(fichier);return -1;}
#define CTOI(C) (*(int*)&C) //récupère en int un nombre pointé par un char*

int LoadBMP(char *File)
{
unsigned char *Data;
FILE *fichier;
unsigned char Header[0x36];
GLuint DataPos,DataSize;
GLint Components;
GLsizei Width,Height;
GLenum Format,Type;
GLuint Name[1];

//Lit le fichier et son header
fichier = fopen(File,"rb");if (!fichier) return -1;
if (fread(Header,1,0x36,fichier)!=0x36) EXIT;
if (Header[0]!='B' || Header[1]!='M') EXIT;
if (CTOI(Header[0x1E])!=0) EXIT;
if (CTOI(Header[0x1C])!=24) EXIT;

//Récupère les infos du fichier
DataPos = CTOI(Header[0x0A]);
DataSize = CTOI(Header[0x22]);
//Récupère les infos de l'image
Width = CTOI(Header[0x12]);
Height = CTOI(Header[0x16]);
Type = GL_UNSIGNED_BYTE;
Format = GL_RGB;
Components = 3;

//!!!!
if (DataSize==0) DataSize=Width*Height*Components;
if (DataPos==0) DataPos=0x36;

//Charge l'image
fseek(fichier,DataPos,0);
Data = new unsigned char[DataSize];
if (!Data) EXIT;

if (fread(Data,1,DataSize,fichier)!=DataSize)
{
delete Data;
fclose(fichier);
return -1;
}

fclose(fichier);

//Inverse R et B
unsigned char t;
for (int x=0;x<Width*Height;x++)
{
t=Data[x*3];
Data[x*3]=Data[x*3+2];
Data[x*3+2]=t;
}

//Envoie la texture à OpenGL
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glGenTextures(1, Name);
glBindTexture(GL_TEXTURE_2D, Name[0]);

glTexImage2D
(
GL_TEXTURE_2D, //target
0, //mipmap level
Components, //nb couleurs
Width, //largeur
Height, //hauteur
0, //largeur du bord
Format, //type des couleurs
Type, //codage de chaque composante
Data //Image
);

return Name[0];
}

////////////////////////////

void InitGL()
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);

Nom = LoadBMP("Texture.bmp");
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
//glHint est activé si on active le filtering
//glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);

}

////////////////////////////

void Reshape(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.,float(w)/float(h),1,100);
}

////////////////////////////

void Draw()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(3,2,3,0,0,0,0,1,0);
glRotated(a,0,1,0);

glBegin(GL_QUADS);

glTexCoord2i(0,0);glVertex3i(-1,-1,-1);
glTexCoord2i(1,0);glVertex3i(+1,-1,-1);
glTexCoord2i(1,1);glVertex3i(+1,+1,-1);
glTexCoord2i(0,1);glVertex3i(-1,+1,-1);

glTexCoord2i(0,0);glVertex3i(-1,-1,+1);
glTexCoord2i(1,0);glVertex3i(+1,-1,+1);
glTexCoord2i(1,1);glVertex3i(+1,+1,+1);
glTexCoord2i(0,1);glVertex3i(-1,+1,+1);

glTexCoord2i(0,0);glVertex3i(+1,-1,-1);
glTexCoord2i(1,0);glVertex3i(+1,-1,+1);
glTexCoord2i(1,1);glVertex3i(+1,+1,+1);
glTexCoord2i(0,1);glVertex3i(+1,+1,-1);

glTexCoord2i(0,0);glVertex3i(-1,-1,-1);
glTexCoord2i(1,0);glVertex3i(-1,-1,+1);
glTexCoord2i(1,1);glVertex3i(-1,+1,+1);
glTexCoord2i(0,1);glVertex3i(-1,+1,-1);

glTexCoord2i(0,0);glVertex3i(-1,+1,-1);
glTexCoord2i(1,0);glVertex3i(+1,+1,-1);
glTexCoord2i(1,1);glVertex3i(+1,+1,+1);
glTexCoord2i(0,1);glVertex3i(-1,+1,+1);

glTexCoord2i(0,0);glVertex3i(-1,-1,+1);
glTexCoord2i(1,0);glVertex3i(+1,-1,+1);
glTexCoord2i(1,1);glVertex3i(+1,-1,-1);
glTexCoord2i(0,1);glVertex3i(-1,-1,-1);

glEnd();

a+=1;
glutSwapBuffers();
glutPostRedisplay();
}

////////////////////////////
//THE END///////////////////
////////////////////////////

Progundeath ~ "Programmer until death" >:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_kawito Messages postés 24 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005
21 juil. 2003 à 22:27
salut,
1)tu as verifier que ton image a bien une taille de multiple d'une puissance de 2 soit 256*256 ou 512*512 par exemple !
2)ton image est t'elle bien en 24 bpp ?
verifie ça dans ms paint.
3)glutInitDisplayModeGLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);
teste plutot pour le moment:
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);

4)teste plutot
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imagetex[0]->sizeX, imagetex[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, imagetex[0]->data);
que
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imagetex[0]->sizeX, imagetex[0]->sizeY, 0, GL_RGBA,GL_UNSIGNED_BYTE, imagetex[0]->data);

5) je viens de voir un GROS PROBLEME :

AUX_RGBImageRec * ChargeBMP(char nomfichier[])
> {
> FILE * fichier=NULL;
> if(!nomfichier)
> {
> return NULL;
> }
> fichier=fopen(nomfichier,"r");
> if(!fichier)
> {
> return NULL;
> }
> fclose(fichier);
> return auxDIBImageLoad(nomfichier);
> }

mais qu'est ce que c'est que cette fonction ??
tu lui passe un tableau de char (nomfichier[])
et elle renvoie quoi nomfichier ,je crois quil y a un petite erreur....
elle devrais par renvoyer un pointeur sur les data de l'image ?
du genre :

AUX_RGBImageRec *pBitmap = NULL;

pBitmap = auxDIBImageLoad(nomfichier);

return(pBitmap);

ajoute donc cette variable a ta fonction !

et je serais toi j'aisserais de ne faire qu'une seul fonction
au lieu de deux :
AUX_RGBImageRec * ChargeBMP(char nomfichier[])
int ChargeTex()

int chargerTextureBMP(char *nomfichier);

et elle retourne 0 si tout c'est bien passé et une erreur sinon
bref tu fais un mix des deux.

utilise des char* plutot que des tableaus de char,mais les chaines de caractere, si tu maitrisse pas trop ,cela deviens vite compliqué !

reste en GL_SINGLE et GL_RGB

n'oublis pas les glEnable(GL_TEXTURE_2D);
et glDisable (GL_TEXTURE_2D);
je n'en n'ais pas vu........

pour l'initialisation :

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
glutInitWindowPosition(0, 0); // A ce niveau, les coordonnées sont calculées par rapport au coin haut-gauche
glutCreateWindow("Test Opengl");
glutFullScreen();

et pour le rediimensionement de la fenetre

void Redim(int l, int h)
{
glViewport(0, 0, l, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, l, h, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

la tu sera en plein ecran (2d) pour commencer ,
l'origine x=0 y=0 est en haut a gauche
et la taille de la fenetre et de la taille des constantes que tu aura defini :

#define LARGEUR_FENETRE 1024
#define HAUTEUR_FENETRE 768
par exemple !

et si c'est un tutoriel le source que tu as ,et ben c'est normal qui marche po

j'espere t'avoir aidé ,je crois que tu as du boulot.

a+
0
progundeath Messages postés 7 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 juillet 2003
21 juil. 2003 à 23:18
Salut kawito malgré tes effor je ni arrive toujour pa sa m'énerve franchemen mai g fais presque exactement comme tu m'as di de faire mais je me demande si se n'ai pa mon implémentation qui merde ou un truc dasn le genre pasque j'ai fais tout se que tu m'as di de faire mais bon je vais mettre la source telle que je l'ai compilée et est ce que tu pourrai essayé de la compilé et de l'éxécuter pour me dire si sur ton ordi sa marche et sinon qu'est ce qui cloche si tu veu bien bien sur alor attend je mais la source :

#include <GL\glut.h>
#include <GL\glaux.h>
#include <stdio.h>
#include <stdlib.h>

GLuint texture[1];

void Dessin()
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texture[0]);
    gluLookAt(0,0,1,0,0,-10,0,1,0);
     glBegin(GL_QUADS);
     glTexCoord2i(0,0);glVertex2f(0.25,0.25);
     glTexCoord2i(1,0);glVertex2f(0.75,0.25);
     glTexCoord2i(1,1);glVertex2f(0.75,0.75);
     glTexCoord2i(0,1);glVertex2f(0.25,0.75);
     glEnd();
     glDisable(GL_TEXTURE_2D);
    glFlush();
    }

GLuint ChargeTexBMP(char*nomfichier)
    {
      if(!nomfichier)
      {
      return GL_FALSE;
      }
    FILE*fichier;
      if(!(fichier=fopen(nomfichier,"rb")))
      {
      return GL_FALSE;
      }
    fclose(fichier);
    AUX_RGBImageRec *image = NULL;
    image = auxDIBImageLoad(nomfichier);
    glGenTextures(1,&texture[0]);
    glBindTexture(GL_TEXTURE_2D,texture[0]);
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,image->data);
      if(image)
      {
        if(image->data)
        {
        free(image->data);
        }
      free(image);
      }
    return GL_TRUE;
    }

GLuint Init()
    {
    glClearColor(0.0,0.0,0.0,0.0);
    glShadeModel(GL_SMOOTH);
    glEnable(GL_TEXTURE_2D);
      if(!ChargeTexBMP("Texture.bmp"))
      {
      return GL_FALSE;
      }
    return GL_TRUE;
    }

void Redim(int w,int h)
    {
    glViewport(0,0,(GLsizei)w,(GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0,1,0,1,-10,10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }

int main(int argc,char *argv[])
    {
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
    glutInitWindowSize(300,300);
    glutInitWindowPosition(100,100);
    glutCreateWindow("Essai OpenGL");
      if(!Init())
      {
      return 1;
      }
    glutReshapeFunc(Redim);
    glutDisplayFunc(Dessin);
    glutMainLoop();
    return 0;
    }


voila j'espere que tu vas m'aidez a résoudre mon probleme pasque je commence a me demandé si je suis pa un gros nul qu'arrive rien enfin bref et encore merci pour ton aide.

Progundeath ~ "Programmer until death" >:)
0
cs_kawito Messages postés 24 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005
22 juil. 2003 à 02:11
ça sa tourne ,tu as un ecran 2d de 1024/768 en plein ecran !
place une image : image.bmp en 24bpp et 512/512
bon courage

#define LARGEUR_FENETRE 1024
#define HAUTEUR_FENETRE 768

void Init();
int ChargeTexBMP(const char*nomfichier);
void Dessin(void);
void Redim(int w,int h);

GLuint texture[1];

void Init()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
}

int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
glutInitWindowPosition(0, 0); // A ce niveau, les coordonnées sont calculées par rapport au coin haut-gauche
glutCreateWindow("Risk 2004");
glutFullScreen();
Init();
glutReshapeFunc(Redim);
glutDisplayFunc(Dessin);
glutMainLoop();
return 0;
}

int ChargeTexBMP(const char* nomfichier)
{
AUX_RGBImageRec * pBitmap = NULL;

pBitmap = auxDIBImageLoad(nomfichier);
if (pBitmap == NULL)
{
return 1;
}

glGenTextures(1, &texture[0]);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, pBitmap->sizeX, pBitmap->sizeY, GL_RGB, GL_UNSIGNED_BYTE, pBitmap->data);

if (pBitmap)
{
if (pBitmap->data)
{
free(pBitmap->data);
}

free(pBitmap);
}
return 0;
}

void Dessin(void)
{
glClear(GL_COLOR_BUFFER_BIT);

if (ChargeTexBMP("image.bmp") == 1)
{
// traiter l erreur
}

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glBegin(GL_QUADS);
glTexCoord2i(0,0);glVertex2f(412,484);
glTexCoord2i(1,0);glVertex2f(612,484);
glTexCoord2i(1,1);glVertex2f(612,284);
glTexCoord2i(0,1);glVertex2f(412,284);
glEnd();
glDisable(GL_TEXTURE_2D);
glFlush();
}

void Redim(int l, int h)
{
glViewport(0, 0, l, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, l, h, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
0
progundeath Messages postés 7 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 juillet 2003
22 juil. 2003 à 18:45
olala commen je te di un grand merci kawito a nan mais la merci merci beaucoup sa marche je suis super méga tout joice enfin bref merci beaucoup.

Progundeath ~ "Programmer until death" >:)
0
svirpiren Messages postés 29 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 23 février 2011
15 janv. 2005 à 19:52
n'aurais tu pas besoin d'une fonction du type "SwapBuffer()"?

pierre
0
Rejoignez-nous