Hallo Leute!
Seit heute versuche ich ein wenig in (D).NET einzusteigen und nach kleineren Erfolgen konnte ich es auch nicht lassen mich an Direct3D ranzuwagen... hab also erstmal die Tutorials des SDKs in Angriff genommen, traf aber im 4. Tutorial (Materials and Lights) auf ein nicht behebares Problem: eine OutOfRange-
Exception bei Device.Lights. Sowohl mehrfaches Suchen (sorry, falls die Lösung doch schon irgendwo hier drin steht
) als auch ein Vergleich mit der D.NET übersetzung des Tutorials in der
Code-Library brachten mich einer Lösung nicht wirklich näher. Mir ist eigentlich schon klar, warum unten stehender Code nicht funzt - es wird ja schließlich nirgendwo ein D3DLight geaddet - aber wie macht man dies nun? (vor allem, wenn keine Add Methode vorhanden ist)
Hiermal die entscheidende Codestelle:
Delphi-Quellcode:
//FDevice ist ein private Feld von TWinForm als Microsoft.DirectX.Direct3D.Device
procedure TWinForm.SetupLights;
begin
{...}
FDevice.Lights[0].&Type:=LightType.Directional;
FDevice.Lights[0].Diffuse:=System.Drawing.Color.DarkTurquoise;
FDevice.Lights[0].Direction := Vector3.Create(
Math.Cos(Environment.TickCount / 250.0),
1.0,
Math.Sin(Environment.TickCount / 250.0));
FDevice.Lights[0].Enabled:=True;
{...}
PS: Für die von euch, die sich Fragen, warum ich das in der TWinForm alles mach: Ich will jetzt erstmal die Unterschiede zwischen Native Direct3D und Direct3D.NET herausfinden und dann kümmere ich mich um ein wenig mehr
OOP
Edit: OK... hat sich erledigt... wenn man einfach zu DUMM zum Code komplett auf das Tutorial anpassen und danach auch noch zum Debuggen ist... Hatte vergessen mein Vertexarray von [0..2] auf [0..99] zu erweitern... Sry für des sinnlose Posting und gut nacht