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:
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:
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.0f, 0); m_device.BeginScene();
mesh.DrawSubset(0);
m_device.EndScene(); m_device.Present(); } |
Eigendlich sollte ich doch mit:
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