2010-11-17 68 views
0

我在這裏有一個非常n00b類似的問題..我有這個小型的XNA遊戲,我嘗試導入已由微軟提供和提供的3D模型。問題是XNA沒有加載與這個模型相關的紋理,儘管它確保了與模型相關的東西存在於項目目錄中(如果它找不到這些紋理,編譯器會給出一個錯誤)。基本上我只看到一個大的泥塑模型:P ..XNA自動加載模型紋理

此圖爲我得到的結果是:

http://img217.imageshack.us/img217/8873/wronge.png

這是它應該是什麼樣子:

http://img508.imageshack.us/img508/5971/correct.png

有什麼我在這裏失蹤的? XNA是否應該自動應用與特定模型相關的所有紋理?

+2

你能提供你加載這個紋理的地方的代碼嗎? – 2010-11-17 01:11:25

回答

1

當你渲染你dude.fbx模型,確保在迴路中用於繪製模型,您有類似以下內容:

foreach (ModelMesh mesh in model.Meshes) 
{ 
    foreach (BasicEffect effect in mesh.Effects) 
    { 
     effect.EnableDefaultLighting(); 
    } 
} 

這是從我的頭頂,所以方法調用可能不正確。

0

Xna不會自動加載模型的紋理。 Xna的資源編譯器拋出了當紋理不存在時得到的異常,並且與實際導入任何內容無關。

你會解決這個問題的方法是手動LoadContent()或其他地方加載紋理,你使用有ContentManager

modelTexture = Content.Load<Texture2D>("mytexture"); 

,然後添加紋理無論是作爲一個參數,如果你有一個自定義效果或者把它放在Texture財產上的BasicEffect例如當你畫吧:

foreach (ModelMesh mesh in model.Meshes) 
{ 
    foreach (BasicEffect eff in mesh.Effects) 
    { 
     eff.TextureEnabled = true; 
     eff.Texture = modelTexture; 
    } 
    mesh.Draw(); 
} 

(圖紙上應明顯不LoadContent()雖然完成)

注意使用BasicEffect時需要激活紋理的eff.TextureEnabled = true;