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 :

Textures : glGenTextures


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Textures : glGenTextures
    bonjour @ tous

    je souhaite appliquer un bete echiquier sur une face carrée, je fais tout bien comme dans les exemples, mais rien ne s'affiche, j'ai un beau carré noir ....

    je fais afficher les identifiants créés par glGenTextures, et ca ne me sort que des 0 ... le pb viendrait il de la ?

    voici un chouille de code :

    Fonction de création de la Texture
    byte[] Texture = new byte[16] { 0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF };


    GL.glGenTextures(3, Tex);
    GL.glBindTexture(GL.GL_TEXTURE_2D, this.Tex[1]);
    GL.glBindTexture(GL.GL_TEXTURE_2D, this.Tex[2]);
    GL.glBindTexture(GL.GL_TEXTURE_2D, this.Tex[0]);

    //GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, 4, 256, 256, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, Texture);
    GL.gluBuild2DMipmaps(GL.GL_TEXTURE_2D, 4, 256, 256, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE,Texture );

    MessageBox.Show(this.Tex[0].ToString());
    MessageBox.Show(this.Tex[1].ToString());
    MessageBox.Show(this.Tex[2].ToString());

    Dans ma fonction de dessin


    GL.glBindTexture(GL.GL_TEXTURE_2D, this.Tex[0]);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);


    GL.glBegin(GL.GL_QUADS);
    GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-2.0f, -1.0f, 0.0f);
    GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-2.0f, 1.0f, 0.0f);
    GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(0.0f, 1.0f, 0.0f);
    GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(0.0f, -1.0f, 0.0f);


    GL.glEnd();
    merci de m'eclairer

  2. #2
    Membre habitué Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Points : 145
    Points
    145
    Par défaut Re: Textures : glGenTextures
    Citation Envoyé par Deus Ex Makina
    je fais afficher les identifiants créés par glGenTextures, et ca ne me sort que des 0 ... le pb viendrait il de la ?
    Au moins une partie. Vérifie les codes retour des fonctions gl avant ton glgentextures. (peut être à tu mis un glbegin avant )

    D'autre part, il est inutile d'aligner trois glBindTexture à la suite, seul le dernier "compte".

    Tu passe un buffer de 16 octets à ta fonction de creation de ta texture alors qu'il en faudrait un de 256 k

    enfin, les glTexParameteri ne sont pas à mettre dans la fonction de dessin

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut Re: Textures : glGenTextures
    Citation Envoyé par Deus Ex Makina
    GL.gluBuild2DMipmaps(GL.GL_TEXTURE_2D, 4, 256, 256, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE,Texture );
    Citation Envoyé par ken_le_videur
    Tu passe un buffer de 16 octets à ta fonction de creation de ta texture alors qu'il en faudrait un de 256 k
    à mon avis aussi cela vient du buffer
    en fait tu demandes à créer une texture 2D de 4 bits par pixels de 256 pixels de large et 256 pixels de haut soit 256*256*4 octets
    tu vois ta texture noire parceque tes 16 octets couvrent 8 pixels à peine
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    merci pour vos reponse, en effet je demande une image de 256*256 alors que je n'ai qu'un tableau de 16 byte, mais c'etait pour tester ... honte a moi j'aurais du changer ca avant de poster
    à l'origine c'est une image 2*2 que je veux
    j'ai repassé mes paramètres du bon cote du code, je me suis restreint a générer une seule texture (ca tombe bien j'en veux qu'une) les 3 ne me servaient que de "comparateurs"

    je m'en vais zieuter mon code pour voir ce pb de glbegin ... car j'ai egalement ca .:

    GL.glGenTextures(1,Tex);

    MessageBox.Show(GL.glGetError().ToString()+" "+GL.GL_INVALID_OPERATION.ToString());
    ce qui me fait apparaitre un zoulie boite de dialogue contenant : "1282 1282"

    piqué sur un site
    GL_INVALID_OPERATION glGenTextures was called between a call to glBegin and the corresponding call to glEnd.

  5. #5
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    GL_INVALID_OPERATION glGenTextures was called between a call to glBegin and the corresponding call to glEnd.
    lorsque tu lances un glBegin, il doit être suivit tot ou tard par un glEnd, c'est pour dire à opengl quand tu commences à "dessiner" et quand tu arrêtes

    Il faut appeler certaines fonctions telle que glGenTextures en dehors d'un bloc
    glBegin
    ...
    glEnd

    donc si tu as appelé glBegin avant glGenTextures il faut que tu fasses un glEnd avant glGenTextures sinon c'est peut-etre que ton glBegin est inutile
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    en fait, j'avais pas de pb avec glBegin et glEnd mais plutot : je declarais ma font (sur laquelle je vais balancer la texture) puis peu apres, je faisais un glClear sur mes buffer ... bien joué !!

    merci pour votre aide
    à marche maintenant

+ 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