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

DirectX Discussion :

Probleme avec Texture2


Sujet :

DirectX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Probleme avec Texture2
    Bonjour,

    J'ai il y a peu essaye de creer mon format de vertex pour pouvoir utiliser 2 coordonnees de textures, je ne peux pas mettre le code maintenant vu que je ne l ai pas sous la main mais en gros j utilise un VertexDeclaration avec 2 FLOAT3 pour la position + normale et aussi 2 FLOAT2 pour les coordonnes de textures, le format est de type Position | Normal | Texture2 et j ai bien mis mon stridSize, le probleme est que lorsque je met un SetTexture(1, texture) mon mesh apparait blanc, donc sans texture. Je mettrais le code ce soir si je peux mais si vous avez deja des idees je suis preneurs.

    Merci, Bloody76

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    le fvf correspondant à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct VERTEX
    {
        D3DXVECTOR3 position;
        D3DXVECTOR3 normale;
        D3DXVECTOR2 tex01;
        D3DXVECTOR2 tex02;
    }
    est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DWORD fvf = D3DFVF_POSITION | D3DFVF_NORMAL | D3DFVF_TEX2;
    regarde du coté de la configuration de tes étages de texture

    merci ShadowTzu j'ai en effet écris une grosse connerie ><

  3. #3
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 296
    Points
    296
    Par défaut
    Bonsoir,

    il me semble que ton fvf devrait plutôt être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DWORD fvf = D3DFVF_POSITION | D3DFVF_NORMAL | D3DFVF_TEX2;

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Désolé de cette réponse tardive mais je n'ai pas pu faire autrement. J'ai bien ce format de Vertex, et la structure semble etre bonne. Voici quelques bouts de 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
     
    public float X;
            public float Y;
            public float Z;
            public float Nx;
            public float Ny;
            public float Nz;
            public float Tu1;
            public float Tv1;
            public float Tu2;
            public float Tv2;
            public static readonly VertexFormats Format = VertexFormats.Position | VertexFormats.Normal | VertexFormats.Texture2;
            public static readonly VertexElement[] Declarator = new VertexElement[]
            {
                new VertexElement( 0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0 ),
                new VertexElement( 0, 12, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Normal, 0 ),
                new VertexElement( 0, 24, DeclarationType.Float2,  DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0 ),
                new VertexElement( 0, 32, DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0 ),
                VertexElement.VertexDeclarationEnd
     
            };
            public static readonly int StrideSize =
            VertexInformation.GetDeclarationVertexSize( Declarator, 0 );
     
            /// <summary>Creates a vertex with a position and two texture coordinates.</summary>
            /// <param name=”x”>X position</param>
            /// <param name=”y”>Y position</param>
            /// <param name=”z”>Z position</param>
            /// <param name=”u1″>First texture coordinate U</param>
            /// <param name=”v1″>First texture coordinate V</param>
            /// <param name=”u2″>Second texture coordinate U</param>
            /// <param name=”v2″>Second texture coordinate V</param>
            public PositionNormal2Textured( float x, float y, float z, float nx, float ny, float nz, float u1, float v1, float u2, float v2 )
            {
                X = x;
                Y = y;
                Z = z;
                Nx = nx;
                Ny = ny;
                Nz = nz;
                Tu1 = u1;
                Tv1 = v1;
                Tu2 = u2;
                Tv2 = v2;
     
            }
     
            /// <summary>Creates a vertex with a position and two texture coordinates.</summary>
            /// <param name=”position”>Position</param>
            /// <param name=”u1″>First texture coordinate U</param>
            /// <param name=”v1″>First texture coordinate V</param>
            /// <param name=”u2″>Second texture coordinate U</param>
            /// <param name=”v2″>Second texture coordinate V</param>
            public PositionNormal2Textured( Vector3 position, Vector3 normal, float u1, float v1, float u2, float v2 )
            {
                X = position.X;
                Y = position.Y;
                Z = position.Z;
                Nx = normal.X;
                Ny = normal.Y;
                Nz = normal.Z;
                Tu1 = u1;
                Tv1 = v1;
                Tu2 = u2;
                Tv2 = v2;
     
            }
     
            /// <summary>Gets and sets the position</summary>
            public Vector3 Position
            {
                get
                {
     
                    return new Vector3(X, Y, Z); 
                }
                set
                {
                    X = value.X;
                    Y = value.Y;
                    Z = value.Z;
     
                }
     
            }
     
            public Vector3 Normal
            {
                get
                {
                    return new Vector3(X, Y, Z); 
     
                }
                set
                {
                    X = value.X;
                    Y = value.Y;
                    Z = value.Z;
     
                }
     
            }
     
        }
    et lors du rendu :

    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
     
     
     Terrain.t_device.SetTexture(0, Terrain.t_detailTex);
                Terrain.t_device.SetTexture(1, Terrain.t_detailTex);            
     
     
                Terrain.t_device.VertexFormat = CustomVertexTof.PositionNormal2Textured.Format;
     
                if (_disposeDatas != null && _lastLoadedDatas.Count > 0)
                {
                    this._disposeDatas.Add(this._currentBufferData);
                    this._currentBufferData = _lastLoadedDatas[0];
                    _lastLoadedDatas.RemoveAt(0);                
                }
                this.Device.SetStreamSource(0, _currentBufferData.VertexBuffer, 0, CustomVertexTof.PositionNormal2Textured.StrideSize);
     
                Terrain.t_device.DrawPrimitives(PrimitiveType.TriangleList, 0, _currentBufferData.NumberOfVertices/3);
     
                //_lastLoadedDatas[0].Dispose();
     
     
                Terrain.t_device.SetTexture(0, null);
                Terrain.t_device.SetTexture(1, null);
    Voila si ca peut vous aider... J'ai essayé différent placement de ligne dans le Render mais jamais sans trop de résultat

  5. #5
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 296
    Points
    296
    Par défaut
    tout me semble bon, essaye peut être de jouer avec les textures state du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mDev.TextureState(0).ColorArgument0 = TextureArgument.Current
    mDev.TextureState(0).ColorArgument1 = TextureArgument.TextureColor
    mDev.TextureState(0).ColorArgument2 = TextureArgument.Current
    mDev.TextureState(0).ColorOperation = TextureOperation.Modulate
     
    mDev.TextureState(0).AlphaArgument0 = TextureArgument.Current
    mDev.TextureState(0).AlphaArgument1 = TextureArgument.TextureColor
    mDev.TextureState(0).AlphaArgument2 = TextureArgument.Current
    mDev.TextureState(0).AlphaOperation = TextureOperation.SelectArg1
     
    mDev.TextureState(1).ColorArgument1 = TextureArgument.Current
    mDev.TextureState(1).ColorArgument2 = TextureArgument.TextureColor
    mDev.TextureState(1).ColorOperation = TextureOperation.Add_Signed
    et verifie bien ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mDev.TextureState(0).TextureCoordinateIndex = 0
    mDev.TextureState(1).TextureCoordinateIndex = 1

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    toujours sans succès, tu es sur qu'il ne manque pas une ligne tout simplement ? un truc crucial ? Car la premiere coordonnées est bien utilisé mais la deuxieme pas du tout

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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