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 :

création de textures


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut création de textures
    Bonsoir tout le monde voila mon soucis est simple j'ai une image stockée dans un tableau d'entiers et j'aimerais la transformer en texture pour opengl sans avoir a sauvegarder le fichier. J'ai essayer de recopier mon tableau dans un autre tableau de bytes et de donner ce dernier en parametre a la fonction glTexImage2D mais cela n'a pas marché.
    Avez vous une idée de la facon dont je pourrais procéder?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 151
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Que contient ton tableau? ( Comment est stockée ton image dans le tableau ? )
    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 averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Bonsoir alors mon tableau est a un tableau d'entiers a trois dimensions tab[hauteur][largeur][3] et contient la valeur de chaque composante R,G,B de chaque pixel.
    J'ai essayé en remplacant GL_UNSIGNED_BYTE par GL_INT dans la fonction glTexImage2D mais ca fait completement planter mon application.
    Il doit bien y avoir moyen de definir une texture a partir d'un tableau d'entier.
    Mon but est en fait dafficher une video en opengl, vu que les images recuperées par ma webcam sont stockées dans un tableau d'entiers je veux directement traiter ces données et ne pas devoir sauvegarder puis charger un fichier ce qui est impensable
    Voila si qulqu'un a une petite astuce
    Bonne soirée ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    je post le code de mon programme. Jutilise pour linstant une fonction charger que jai ecrit moi meme et qui charge une image au format .ppm et lenregistre dans un tableau d'entiers. A l'execution le programme fait tout planter


    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
    109
    110
    111
    112
    #include <SDL/SDL.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <opencv/highgui.h>
    #include <opencv/cv.h>
    #include <cstdlib>
    #include "sdlglutils.cpp"
    #include "image.h"
    #include "charger.c"
     
    void Dessiner();
     
    GLuint texture1;
    GLuint texture[263][400][3];
     
    int main(int argc, char *argv[])
    {
        int i,j;
        Image im;
        im = (Image)malloc(sizeof(struct ima));
     
     
        SDL_Event event;
     
        SDL_Init(SDL_INIT_VIDEO);
        atexit(SDL_Quit);
        SDL_WM_SetCaption("SDL GL Application", NULL);
        SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
     
        glMatrixMode( GL_PROJECTION );
        glLoadIdentity();
        gluPerspective(70,(double)640/480,1,1000);
     
        glEnable(GL_DEPTH_TEST);
        glEnable(GL_TEXTURE_2D);
        charger(im,"lost.ppm");
        printf("%d %d\n",(*im).hauteur,(*im).largeur);
        for(i=0;i<(*im).hauteur;i++){
            for(j=0;j<(*im).largeur;j++){
                texture[i][j][0]=(*im).image[j][i].r;
                texture[i][j][1]=(*im).image[j][i].g;
                texture[i][j][2]=(*im).image[j][i].b;
            }
        }
        printf("Termine\n");
        glGenTextures(1,&texture1);
        glBindTexture(GL_TEXTURE_2D, texture1);
        glTexImage2D(GL_TEXTURE_2D,0,3,640,480,0,GL_RGB,GL_INT,texture);
     
        Dessiner();
     
        Uint32 last_time = SDL_GetTicks();
        Uint32 current_time,ellapsed_time;
        Uint32 start_time;
     
        for (;;)
        {
            start_time = SDL_GetTicks();
     
            while (SDL_PollEvent(&event))
            {
     
                switch(event.type)
                {
                    case SDL_QUIT:
                    exit(0);
                    break;
                }
            }
     
            current_time = SDL_GetTicks();
            ellapsed_time = current_time - last_time;
            last_time = current_time;
     
            Dessiner();
     
            ellapsed_time = SDL_GetTicks() - start_time;
            if (ellapsed_time < 10)
            {
                SDL_Delay(10 - ellapsed_time);
            }
     
        }
     
        return 0;
    }
     
    void Dessiner()
    {
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
     
        gluLookAt(0,5,0,0,0,0,0,0,1);
     
        glMatrixMode( GL_TEXTURE );
        glLoadIdentity( );
     
        glBindTexture(GL_TEXTURE_2D, texture1);
        glPushMatrix();
     
        glBegin(GL_QUADS);
            glTexCoord2d(0,1);
            glVertex3d(1,1,1);
            glTexCoord2d(0,0);
            glVertex3d(1,1,-1);
            glTexCoord2d(1,0);
            glVertex3d(-1,1,-1);
            glTexCoord2d(1,1);
            glVertex3d(-1,1,1);
        glEnd();
        glFlush();
        SDL_GL_SwapBuffers();
    }

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    J'imagine que le .ppm est mal lu et que tu fais un dépassement quelconque; il faudrait que tu utilises ton debugger pour vérifier ça.

    Sinon, pourquoi utiliser des GLuint et non des GLubyte pour ta texture ? Tu trouveras un exemple de texture procédural sur ce fil d'ailleurs.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    bonsoit,
    en fait je ne pense pas que cela vienne de ma fonction car je lavais ecrit bien avant et deja utilisée et il n'y avait aps eu de probleme, jai meme essayé sans la fonction en recuperant directement une image de ma webcam et cela plante de la meme facon.

    Sinon dans l'esprit je voulais utiliser des bytes mais question tres bete je pense, comment je fais pour convertir mon tableau d'entiers en tableau de bytes?

    merci et bonne soirée

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

Discussions similaires

  1. Création de textures jogl
    Par jafar456 dans le forum OpenGL
    Réponses: 6
    Dernier message: 25/03/2009, 19h02
  2. Création de texture
    Par toukito dans le forum DirectX
    Réponses: 13
    Dernier message: 16/01/2008, 16h15
  3. [DIRECTX] Problème création de texture dynamique
    Par caparenlive59 dans le forum DirectX
    Réponses: 2
    Dernier message: 04/06/2007, 12h54
  4. Création de texture
    Par MrDuChnok dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 13/07/2006, 14h14
  5. Réponses: 22
    Dernier message: 03/08/2005, 00h28

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