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();
}
}
}
}
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... ?(