Autor Beitrag
Hurraa
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 27.11.08 20:00 
Hallo,
ich habe ein kleines Problem mit der Mesh Klasse. Wenn ich eine *.x file lade sieht man nichts, genauso wie wenn ich Mesh.Box(...) aufrufe...
Ich benutze MDX 1.x und nicht 2.x, weil Visual Studio meint das ist eine Betaversion...
Hier mein Code:


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
   public class Window : Form
   {
       private static Device m_graphic_device = null;
       private static Mesh mesh;    

       public Window()
       {
           this.Text = Core.GameName;
       }

       public void InitDevice()
       {
           PresentParameters param = new PresentParameters();

           param.Windowed = true;
           param.SwapEffect = SwapEffect.Discard;


           m_graphic_device = new Device(0, DeviceType.Hardware, this.Handle, CreateFlags.SoftwareVertexProcessing, param);

           //here my mesh box
           mesh = Mesh.Box(m_graphic_device, 2.0f1.0f2.0f);
       }

       public void Render()
       {
           m_graphic_device.Clear(ClearFlags.Target, Color.DarkBlue, 1.0f0);
           m_graphic_device.BeginScene();

           //in fact here is nothing drawn anyway...
           mesh.DrawSubset(0);

           m_graphic_device.EndScene();
           m_graphic_device.Present();
       }
   }


Das wird in in Main() aufgrufen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
            using (Window w = new Window())
            {
                w.InitDevice();
                w.Show();

                while (w.Created && m_run)
                {
                    Timer.Update();

                    w.Render();

                    Application.DoEvents();
                }
            }


Irgendwelche Vorschläge?

mfg Hurraa
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 27.11.08 20:20 
Setzt du denn irgendwo die View- und Projection-Matrix? Vielleicht solltest du dir ein MDX-Tutorial über den grundlegenden Aufbau einer 3D-Szene anschauen.
user profile iconHurraa hat folgendes geschrieben Zum zitierten Posting springen:
Ich benutze MDX 1.x und nicht 2.x, weil Visual Studio meint das ist eine Betaversion...
Da hat es auch Recht ;) . Und schon lange eingestellt und ohne Support sind alle beide.

_________________
>λ=
Hurraa Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 27.11.08 20:24 
Also das heißt das man Nativ DirectX verwenden soll? Wieso hat eig. Mircosoft die Arbeit an MDX eingestellt?
Wenn man aber trotzdem nicht mit C++ Arbeiten will sondern managed code machen will, was bleiben für Möglichkeiten?
Ich habe mir X Tutorials reingezogen über MDX. Ich habe mir sogar ein Buch gekauft, nur irgendwie hat das nie mein Problem gelöst...

mfg Hurraa
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 27.11.08 22:58 
MDX wurde durch XNA ersetzt, das aber in erster Linie für Spiele gedacht ist und einige Einschränkungen enthält. Für die volle Bandbreite brauchst du einen Warpper einer 3rd Party, zum Beispiel SlimDX (inkl. DX10!) oder Tao (OpenGL).

_________________
>λ=
Hurraa Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 28.11.08 10:32 
Ok, danke für die Infos...

mfg Hurraa
Hurraa Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 30.11.08 17:55 
Hallo, ich hab jetzt SlimDX ausprobiert und finde das sie ihren Job sehr gut gemacht haben. :)
Auf jeden fall hab ich ein kleines Problem (DX3D9 nicht 10). Es gibt ein Beispiel von SlimDX wo sich ein Teapot bewegt.
Ich wollte dieses Beispiel verstehen und wollte es nachbaun. So weit so gut, nur seh ich den teapot nicht wirklich
vollständig. Leider nur die Umrisse (er wird um die Y Achse gedreht).
Hier mein Code:

Init Funktion:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
       public void Init()
        {
            PresentParameters present = new PresentParameters();
            present.SwapEffect = SwapEffect.Discard;
            present.DeviceWindowHandle = this.Handle;
            present.Windowed = true;
            present.BackBufferWidth = this.Width;
            present.BackBufferHeight = this.Height;
            present.BackBufferFormat = Format.A8R8G8B8;
            Direct3D directx = new Direct3D();
            m_device = new Device(new Direct3D(), 0, DeviceType.Hardware, this.Handle, CreateFlags.SoftwareVertexProcessing, present);

            mesh = Mesh.CreateTeapot(m_device);
            mesh.ComputeNormals();

            Material material = new Material();
            material.Diffuse = Color.FloralWhite;
            material.Ambient = Color.MidnightBlue;
            m_device.Material = material;

            m_device.SetTransform(TransformState.View, Matrix.LookAtLH(new Vector3(0,0,0),new Vector3(0,0,1),new Vector3(0,1,0)));
            m_device.SetTransform(TransformState.World, Matrix.Translation(new Vector3(0,0,-100)));
        }

Render Funktion:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
     
        public void Render()
        {
           m_device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.WhiteSmoke.ToArgb(), 1.0f0);
           m_device.BeginScene();

           mesh.DrawSubset(0);

           m_device.EndScene();
           m_device.Present();
        }


Eigendlich sollte ich doch mit:
ausblenden C#-Quelltext
1:
2:
            material.Diffuse = Color.FloralWhite;
            material.Ambient = Color.MidnightBlue;

Die Farbe bestimmen die mein Objekt hat oder?

Ich habe also 2 Fragen:
1.)Könnte mir jemand unter die Arme helfen bei diesem Beispiel?
2.)Wie verwende ich die Projektionsmatrix?

mfg Hurraa
Hurraa Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 01.12.08 19:45 
Keiner eine Idee?

mfg Hurraa