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 :

[Texture] rechargement texture dynamique


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Par défaut [Texture] rechargement texture dynamique
    bonjour,

    Je cherche le moyen de recharger un texture. en fait j'utilise une tecture pour afficher un matrice de couleur. cette matrice change est je veux donc rafraichir l'affichage de cette matrice en updatant ma texture.

    voici comment je charge ma texture:
    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
    /**
     * Load texture to OpenGl
     * 
     * @param gl
     * @param Tex
     */
    private void Load_Opengl_Texture(GL gl, Measure_Texture Tex){
     
    	int[] TexId = new int[1];
     
    	gl.glGenTextures(TexId.length, TexId, 0);
    	Tex.Id = TexId[0];
    	gl.glBindTexture(GL.GL_TEXTURE_2D, Tex.Id);
     
    	gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
     
    	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);
     
    	if (Tex.hasAlpha()){
    		gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, Tex.getWidth(),
    				Tex.getHeight(), 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, Tex.convImg2Bytes());
    	}
    	else{
    		gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, Tex.getWidth(),
    				Tex.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, Tex.convImg2Bytes());
    	}
    }
    et voici ce que je fait pour la mettre à jour mais ca ne marche pas:
    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
    /**
     * Update texture to OpenGl
     * 
     * @param NumTex
     * @param Tex
     */
    public void Update_Opengl_Texture(int NumTex, Measure_Texture Tex){
    	GL gl = getGL();
     
    	Texture[NumTex].Set_BufferedImage(Tex.Get_BufferedImage());
     
    	gl.glBindTexture(GL.GL_TEXTURE_2D, Texture[NumTex].Id);
     
    	/*gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
     
    	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);
    	*/
    	if (Texture[NumTex].hasAlpha()){
    		gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, Texture[NumTex].getWidth(),
    				Texture[NumTex].getHeight(), 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, Texture[NumTex].convImg2Bytes());
    	}
    	else{
    		gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, Texture[NumTex].getWidth(),
    				Texture[NumTex].getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, Texture[NumTex].convImg2Bytes());
    	}
    }
    comment puis je modifier ma texture après chargement?

    Merci de votre aide.
    TiTi.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut
    Tu peux utiliser la fonction :
    glTexSubImage2D(...) qui permet de modifier entierement ou partiellement une texture.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Par défaut
    d'après ce que j'ai lu sur cette fonction c'est qu'il permet de charger que la partie utilise de la texture que l'on veux afficher.

    le probleme c'est que je ne connais la texture à l'avance. en fait des que ma texture (sur le PC) est modifier je voudrais updater la texture sur la carte graphique pour raffraichir l'affichage avec la bonne texture.

  4. #4
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Essayes p-e de décommenter les deux mag et min filter

    Sinon je ne vois pas pourquoi tu ne pourrais pas utiliser glTexSubImage2D, tant que ta texture garde la même taille.

    Si elle est de taille différente, tu dois faire un deleteTexture de celle que tu avait et en recreer une et c'est tout, non ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Par défaut
    J'ai effectivement tester avant avec les testé avec les init en commentaire ci-dessous mais ca change rien.

    J'ai remarqué que le traitement de cette fonction etait particulierement long.

    Enfin rien n'ai mis à jour je vois toujours la premiere image chargé.

    quelqu'un aurait il un bout de code qui ferait ce genre d'operation de rafraichissement d'une texture?

    TiTi

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par <_oodTi96Tiboo_>
    quelqu'un aurait il un bout de code qui ferait ce genre d'operation de rafraichissement d'une texture?

    http://nehe.gamedev.net/data/lessons....asp?lesson=35

    Jc

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/02/2008, 18h51
  2. [DIRECTX] Problème création de texture dynamique
    Par caparenlive59 dans le forum DirectX
    Réponses: 2
    Dernier message: 04/06/2007, 12h54
  3. Texture sur texture
    Par pitit777 dans le forum OpenGL
    Réponses: 4
    Dernier message: 23/02/2006, 17h41
  4. Données transmises dans une Texture dynamique
    Par Mastero dans le forum DirectX
    Réponses: 11
    Dernier message: 27/05/2005, 11h40
  5. texture dynamique et chargement de données
    Par Mastero dans le forum DirectX
    Réponses: 6
    Dernier message: 03/05/2005, 14h37

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