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 :

[OpenGL4.x] OpenTK impossible de charger un tableau de short dans une texture


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Par défaut [OpenGL4.x] OpenTK impossible de charger un tableau de short dans une texture
    Bonjour à tous.

    Avec OpentTK, Visual 2015 et en C# je tente de charger une texture avec un tableau de ushort.

    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
     
     
    private void CreateTextureData()
            {
                int W = 512;
                int H = 512;
     
                ushort[] Data = new ushort[ W * H  ];
     
                ushort Color = 32768;
                int Index = 0;
                for ( int l = 0; l < H; l++ ) {
                    Color = 0;
                    for ( int p = 0; p < W; p++ ) {
                        Data[ Index++ ] = Color;
                        Color++;
                    }
                }
     
                GL.Enable( EnableCap.Texture2D );
     
                GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, ( int )TextureMinFilter.Nearest );
                GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, ( int )TextureMinFilter.Nearest );
     
     
                GL.GenTextures( 1, out m_TextureData );
                GL.BindTexture( TextureTarget.Texture2D, m_TextureData );
     
                GL.TexImage2D( TextureTarget.Texture2D, 0, PixelInternalFormat.R16f, W, H, 0, OpenTK.Graphics.OpenGL.PixelFormat.Luminance, PixelType.UnsignedShort, Data );
                Console.WriteLine( "Err : " + GL.GetError().ToString() ); ;
     
                GL.BindTexture( TextureTarget.Texture2D, 0 );
            }
    Malheureusement je n'obtiens qu'une image noire !!!! (mais pas d'erreur)

    A noter que si je remplace PixelType.UnsignedShort par PixelType.UnsignedByte j'obtiens un affichage. Un dégradé de rouge avec des bandes noires (logique) mais une image quand même.


    Je tourne en rond depuis des heures....

    Merci pour vos idées.

    Lionel

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Salut!

    As-tu essayé PixelInternalFormat.R16 plutôt que PixelInternalFormat.R16f ?
    Je ne suis pas sûr que ce soit la solution, mais ça vaut le coup d'essayer.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Par défaut
    Bonjour,

    Oui j'ai essayé! Je crois que j'ai tenté tous les formats et toutes les combinaisons mais sans succés.

    Merci pour l'idée.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Par défaut Resolu
    OK c'est moi qui suis un abruti !



    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
     
     
            m_Width = 2003;
            m_Height = 601;
     
            private void FillTest()
            {
                ushort[] Data = new ushort[ m_Width * m_Height  ];
     
                int Index = 0;
                for ( int l = 0; l < m_Height; l++ ) {
                    ushort Color = 32768;
                    for ( int p = 0; p < m_Width; p++ ) {
                        Data[ Index++ ] = Color;
                        Color += 12;
                    }
                }
     
                GL.BindTexture( TextureTarget.Texture2D, m_TextureIn );
     
                //GL.TexImage2D( TextureTarget.Texture2D, 0, PixelInternalFormat.R16f, m_Width, m_Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Red, PixelType.UnsignedShort, Data );
     
                GL.TexSubImage2D( TextureTarget.Texture2D, 0, 0, 0, m_Width, m_Height, OpenTK.Graphics.OpenGL.PixelFormat.Luminance, PixelType.UnsignedShort, Data ); 
     
                GL.BindTexture( TextureTarget.Texture2D, 0 );
     
            }
    Cela fonctionne très bien si on réinitialise pas Color à zéro à chaque ligne !!!!
    Dans ce cas on ne voit que noir car la variation d'intensité et très faible.
    Maintenant j' ai un beau dégradé de rouge ou un beau dégradé de niveau de gris si j'utilise PixelInternalFormat.Rgb32f (ce que je veut).

    Merci pour votre patience.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2007, 11h20
  2. Réponses: 6
    Dernier message: 16/02/2006, 14h40
  3. Réponses: 2
    Dernier message: 17/01/2006, 13h18
  4. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15
  5. Passer un tableau en parametre dans une fonction js
    Par hellmaster78 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/06/2005, 14h35

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