Forum: Multimedia
Delphi
by igel457,
2. Sep 2010
Klingt auch nach einer guten Lösung, doch Surfaces (FBOs) und Stencilbuffer gleichzeitig sind eine Sache, bei der ich nicht garantieren kann, dass sie funktioniert (ich bin mir auf jeden Fall nicht sicher, ob ich es je getestet habe) ;-)
Forum: Multimedia
Delphi
by igel457,
2. Sep 2010
Ich würde dafür an deiner Stelle den Taschenlampenkegel als vorgefertigtes Bild nehmen und dieses entsprechend Rotiert zeichnen, mit der "TAdImage.DrawRotateAdd" funktion - mit dem Canvas wird das weniger gut funktionieren.
Forum: Multimedia
Delphi
by igel457,
2. Sep 2010
Hey, das sieht ja gar nicht mal so schlecht aus, dafür, dass ich den Code für die Grafikplugins nicht getestet habe ;-)
Du solltest - entsprechende Grafiken für das Terrain vorausgesetzt - recht coole Effekte herstellen können - schließlich können die Lampen jede beliebige Lichtfarbe haben und auch flackern etc.
Forum: Multimedia
Delphi
by igel457,
2. Sep 2010
Du musst erst die Spriteengine auf das AdDraw zeichnen und dann das Surface mit dem Ergebnis multiplizieren:
AdDraw.Activate;
AdSpriteEngine.Draw;
AdSurface.Image.Draw(AdDraw, ..., bmMultiply);
Wenn das nicht funktioniert, überprüfe ob der Inhalt des Surfaces (also nur die Lichter) korrekt gezeichnet werden, wenn du bmAlpha als BlendMode angibst.
Forum: Multimedia
Delphi
by igel457,
1. Sep 2010
Also... du erstellst ein Surface von der Größe des Fensters (wie das geht, ist in der Surface Demo gezeigt) - bei einem Surface handelt es sich um eine Textur, auf die du mit allen anderen Andorra 2D Befehlen drauf Zeichnen kannst - auch das TAdDraw ist ein solches Surface, nur das dessen Inhalte direkt auf den Bildschirm gezeichnet werden.
1. Surface erstellen:
AdSurface :=...
Forum: Multimedia
Delphi
by igel457,
31. Aug 2010
Es sollte schwerer werden den Alpha-Kanal an den richtigen Stellen transparent zu kriegen... Mit der Multiply-Lösung ist aber auch der Vorteil gegeben, dass die Lichter unterschiedliche Farben haben können.
Forum: Multimedia
Delphi
by igel457,
31. Aug 2010
Du kannst mit dem Canvas nochmal die gleiche Figur mit einem Gradient drüber zeichnen - zumindest für die kreisförmigen Lichter sollte das kein Problem sein. Setze dafür die äußere Farbe auf "Ad_ARGB(255, 0, 0, 0)" und die innere auf "Ad_ARGB(0, 0, 0, 0)". Siehe hierfür das Canvas-Tutorial.
Ein Problem hast du nur, wenn sich zwei Lichtquellen überschneiden. Normalerweise wird das so gelöst,...