Laden...

Mesh.FromFile

Erstellt von DeRaaZuul vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.310 Views
D
DeRaaZuul Themenstarter:in
2 Beiträge seit 2004
vor 19 Jahren
Mesh.FromFile

Also ich habe ein Problem damit wenn ich eine Mesh laden will.Immer kommt bei Mesh.FromFile... ein unbekannter Fehler.Ich bin völlig ratlos woran es liegen könnte.Die Beispiel vom SDK laufen ohne Probs.Das selbe Problem habe ich ,wenn ich Polygon texturisieren will und Texturloard.FromFill benutze, kommt ein Fehler.Ich bin völlig Ratlos , hier der Code für das Meshladen:

#region Using directives

using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using Direct3D = Microsoft.DirectX.Direct3D;

#endregion

namespace ConsoleApplication1
{
class Program : Form
{
Device dev;
Material[] mat = null;
Texture[] tex = null;
Mesh mesh;

    public void InitGfx()  
    {  
        PresentParameters pp = new PresentParameters();  
        pp.Windowed = true;  
        pp.SwapEffect = SwapEffect.Discard;  
        pp.EnableAutoDepthStencil = true;  
        pp.AutoDepthStencilFormat = DepthFormat.D16;  

        dev = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, pp);  
        SetCamera();  
        LoadMesh("tiger.x");  



    }  

    public void LoadMesh(string name)  
    {  
        ExtendedMaterial[] em=null;  

//Da kommt der Fehler
mesh = Mesh.FromFile(name, MeshFlags.SystemMemory, dev, out em);

        if ((em != null) && (em.Length != null))  
        {  
            mat = new Material[em.Length];  
            tex = new Texture[em.Length];  
            for (int i = 0; i < em.Length; i++)  
            {  
                mat_ = em_.Material3D;  
                if (em_.TextureFilename != null && em_.TextureFilename != string.Empty)  
                {  
                    tex_ = TextureLoader.FromFile(dev, em_.TextureFilename);  
                }  
            }  
        }  
    }  


    public void DrawMesh()  
    {  
        for (int i = 0; i < mat.Length; i++)  
        {  
            dev.SetTexture(0, tex_);  
            dev.Material = mat_;  
            mesh.DrawSubset(0);  
        }  
    }  

    public void Render()  
    {  

        Material mat = new Material();  

        dev.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.AliceBlue, 1.0f, 0);  
        dev.BeginScene();  

        DrawMesh();  


        dev.EndScene();  
        dev.Present();  
    }  

    public void SetCamera()  
    {  
        dev.Transform.View = Matrix.LookAtLH(new Vector3(0.0f,0.0f, -10.0f), new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f));  
        dev.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, 1.0f, 1.0f, 100.0f);  
    }  

    protected override void OnPaint(PaintEventArgs e)  
    {  
        Render();  
    }  

    static void Main(string[] args)  
    {  
        Program frm = new Program();  
        frm.Show();  
        frm.InitGfx();  
        frm.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);  

        while (frm.Created)  
        {  
            frm.Invalidate();  
            Application.DoEvents();  

        }  
    }  
}  

}

S
223 Beiträge seit 2005
vor 19 Jahren

Original von DeRaaZuul
//Da kommt der Fehler
mesh = Mesh.FromFile(name, MeshFlags.SystemMemory, dev, out em);

Muss da nicht noch sowas hin wie:


mesh = Mesh.FromFile(@"..\\..\"+name, MeshFlags.SystemMemory, dev, out em);

also mit dem @-Operator und den Backslashes... ?(