Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Prism Direct3D.Device.Lights Problem (DX9 Tutorial 4) (https://www.delphipraxis.net/81369-direct3d-device-lights-problem-dx9-tutorial-4-a.html)

JamesTKirk 25. Nov 2006 22:55


Direct3D.Device.Lights Problem (DX9 Tutorial 4)
 
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 :mrgreen: ) 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) :gruebel:

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 :zwinker:

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 :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz