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

C# Discussion :

problème avec copyTo


Sujet :

C#

  1. #1
    Acropole
    Invité(e)
    Par défaut problème avec copyTo
    Bonjour,

    Dans la fonction suivante je récupère des données 3D et crée un objet avec celles ci :

    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
     
            public void setUpCollision()
            {
                TriangleMesh triMesh = new TriangleMesh();
                foreach (ModelMesh m in model.Meshes)
                {
                    int bufferSize = m.VertexBuffer.SizeInBytes*8/96;
     
                    Vector3[] vBuffer = new Vector3[bufferSize];
                    m.VertexBuffer.GetData<Vector3>(vBuffer);
                    List<Vector3> vectorList = new List<Vector3>(vBuffer);
     
                    TriangleVertexIndices[] indices = new TriangleVertexIndices[bufferSize]; ;
                    m.VertexBuffer.GetData<TriangleVertexIndices>(indices);
                    List<TriangleVertexIndices> indiceList = new List<TriangleVertexIndices>();
     
                    triMesh.CreateMesh(vectorList, indiceList, 4, 500.0f);
                }
                _skin.AddPrimitive(triMesh, (int)MaterialTable.MaterialID.UserDefined, new MaterialProperties(0.8f, 0.8f, 0.7f));
     
            }
    mais j'ai une erreur ArrayTypeMismatchException dans la fonction qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public void AddTriangles(List<Vector3> _positions, List<TriangleVertexIndices> _tris)
            {
                // copy the position data into a array
                positions = new Vector3[_positions.Count];
                _positions.CopyTo(positions);
     
                // copy the triangles
                tris = new TriangleVertexIndices[_tris.Count];
                _tris.CopyTo(tris);
            }
    c'est à dire :

    Citation Envoyé par msdn
    The exception that is thrown when an attempt is made to store an element of the wrong type within an array.
    pourtant les types sont les mêmes !

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Avec la ligne ce serait mieux.

    Tu es sûr que c'est sur une des CopyTo ? Parce que dans la MSDN dans les exceptions susceptibles d'être jetées par CopyTo y'a pas celle que tu donnes.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    comment est déclaré positions ?

  4. #4
    Acropole
    Invité(e)
    Par défaut
    j'ai réslout le problème en changeant tout par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                positions = new Vector3[_positions.Count];
                for (int i = 0; i < _positions.Count; i++)  positions[i] = _positions[i];
                tris = new TriangleVertexIndices[_tris.Count];
                for (int i = 0; i < _tris.Count; i++) tris[i] = _tris[i];
    et en extrayant les donnée grace à un post sur le forum de jiglibx.
    Ca passe, mais les collisions correspondent pas toujours.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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