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

GLUT Discussion :

Texture 2d décalé


Sujet :

GLUT

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Texture 2d décalé
    Bonjour, j'ai appliqué une texture (.bmp) sur un carré (QUAD) mais elle ne s'affiche pas correctement , elle est décalé !

    voici le code :
    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
    #ifdef _MSC_VER
    #define _CRT_SECURE_NO_WARNINGS
    #endif
    #include <windows.h>
    #include <stdio.h>
    #include <math.h>
    #include <GL/gl.h>
    #include <GL/glut.h>
    GLuint texture;
     
    GLuint LoadTextureRAW(const char * filename);
     
    void DisplayQuad(GLuint texture)
    {
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     
    	int b;
    	glBindTexture(GL_TEXTURE_2D, texture);
    	glBegin(GL_QUADS);
    		glTexCoord2f(0, 0);
    		glVertex3f(0, 0 ,0);
    		glTexCoord2f(0, 1);
    		glVertex3f(0,1,0);
    		glTexCoord2f(1, 1);
    		glVertex3f(1, 1, 0);
    		glTexCoord2f(1, 0);
    		glVertex3f(1, 0, 0);
    	glEnd();
    }
     
    void display(void) 
    {
     
    	glClearDepth(1);
    	glClearColor(0.0, 0.0, 0.0, 1.0);
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	glLoadIdentity();
    	glTranslatef(0, 0, -5);
    	//glRotatef(angle, 0, 0, 0);
    	DisplayQuad(texture);
    	glutSwapBuffers();
    }
     
    void init(void) 
    {
    	glEnable(GL_DEPTH_TEST);
    	glEnable(GL_TEXTURE_2D);
     
    	glDepthFunc(GL_LEQUAL);
     
    	texture = LoadTextureRAW("snake_tete.bmp");
    }
     
    void reshape(int w, int h) 
    {
    	glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluPerspective(60, (GLfloat)w / (GLfloat)h, 0.1, 100.0);
    	glMatrixMode(GL_MODELVIEW);
    }
     
    int main(int argc, char **argv) 
    {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    	glutInitWindowSize(500, 500);
    	glutInitWindowPosition(100, 100);
    	glutCreateWindow("A basic OpenGL Window");
    	init();
    	glutDisplayFunc(display);
    	glutReshapeFunc(reshape);
    	glutMainLoop();
     
    	return 0;
    }
     
    GLuint LoadTextureRAW(const char * filename)
    {
    	GLuint texture;
    	int width, height;
    	unsigned char * data;
    	FILE * file;
     
    	file = fopen(filename, "rb");
    	if (file == NULL) return 0;
     
    	width = 64;
    	height = 64;
    	data = (unsigned char *)malloc(width * height * 3);
     
    	fread(data, width * height * 3, 1, file);
     
    	fclose(file);
     
    	glGenTextures(1, &texture);
    	glBindTexture(GL_TEXTURE_2D, texture);
    	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    	gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
     
    	free(data);
     
    	return texture;
    }
    voici la texture :
    Nom : snake_tete.jpg
Affichages : 131
Taille : 15,4 Ko

    voici le résultat :
    Nom : Capture d’écran (10).png
Affichages : 111
Taille : 13,8 Ko

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    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 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous ne lisez absolument pas correctement le fichier BMP. Il y a un exemple ici : http://nehe.developpez.com/tutoriel/06-texture/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    merci bien , c'est vrai il y a un problème au niveau de lecture de fichier BMP , j'ai utilisé le code du tuto et c'était parfais.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    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 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Pour être précis, j'ai remarqué que vous ne lisiez pas l'entête du fichier BMP correctement. En effet, dans le fichier, il y a environ une centaine d'octets, qui sont là, pour décrire le format du fichier image (le nombre de couleurs, la taille, ...). Du coup, comme vous ne les lisiez pas, vous vous êtes décalé dans le fichier et il vous manquait même la fin (une partie) des pixels et les premiers pixels étaient faux.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13
  2. Chargement d'une texture a partir de la mémoire
    Par logramme dans le forum DirectX
    Réponses: 6
    Dernier message: 27/01/2003, 14h57
  3. appliquer des textures de taille 2n+1
    Par Katsuo chris dans le forum DirectX
    Réponses: 4
    Dernier message: 14/11/2002, 00h11
  4. Mosaïque texturée
    Par Pode dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/09/2002, 09h50
  5. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31

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