2017-01-20 1 views
1

J'ai des problèmes avec texture.GetData, cause d'AccessViolationExcpetions.XNA .GetData donne à AccessViolationExceptions la texture du modèle

Je suis en train de faire quelque chose comme ce qui suit:

Texture2D texture; 
foreach (var mesh in model.Meshes) 
    foreach (BasicEffect effect in mesh.Effects) 
      texture = effect.Texture; 

ou

texture = ((BasicEffect)model.Meshes[0].Effects[0]).Texture; 

puis:

Color[] data = new Color[texture.Width * texture.Height]; 
texture.GetData(data); 
for (int i = 0; i < data.Length - 1; i++) 
    { 
    if (IsSimilar(data[i], new Color(58, 59, 248), 40, 40, 40)) 
     data[i] = Color.Red; 
    } 
    texture.SetData(data); 

foreach (var mesh in model.Meshes) 
    { 
    foreach (BasicEffect effect in mesh.Effects) 
    effect.Texture = texture; 
    } 

Mais texture.GetData (données), il jette une AccessViolationException, apparemment je ne suis pas autorisé à lire la texture sur le modèle ?? Est-ce que quelqu'un sait comment résoudre ce problème?

Si je l'essaie juste avec une texture chargée, tout fonctionne bien, mais parce que nous avons affaire à beaucoup de modèles différents. Ce serait très compliqué de trouver la texture dont le modèle a besoin, puis de recolorer cette texture et de l'appliquer.

Répondre

0

Quel est le format de la texture? Est-ce qu'il y a des mimaps?

Je m'attendrais à ce qu'un modèle normal ait des textures compressées avec des mipmaps après le traitement. Donc, le tableau que vous passez dans GetData est probablement le mauvais type et la mauvaise longueur.

Si vous pouvez désactiver la génération de mipmap et la compression de texture sur votre processeur de modèle, faites-le immédiatement pour contourner ce problème. MAIS la solution pour faire ce travail si vous avez besoin de compression et de mipmaps devient beaucoup plus complexe.

+0

Merci pour votre réponse. En attendant j'ai travaillé autour de ce problème en passant la texture (png-file) à mes gameobjects, recolorisez-la et que vous l'appliquiez au modèle. Ce qui fonctionne bien. Je n'ai aucune connaissance sur le compresseur de texture et les mimaps. Fera une enquête sur ce sujet, mais ce n'est plus nécessaire. Merci! :) – J4stM4rt