Ich möchte um Referenz bitten. Ich habe einen Artikel darüber getroffen, wie man Schatten in Spielen wirft. Ich verwende HTML5-Canvas (derzeit ohne Webgl) mit Javascript für meine Projekte.
Der oben erwähnte Artikel befindet sich unter http://willyg302.wordpress.com/2012/11/04/2d-visibility/ .
Ich dachte, ob diese Methode mit Canvas (ohne Webgl) und Javascript angewendet werden kann?
Genauer gesagt habe ich nur wenige Formen auf Leinwand gezeichnet, von denen einige komplex sind und durch Bogen und ähnliche Methoden hergestellt wurden. Daher habe ich keine einfache Möglichkeit, eine Form mit einer Gleichung zu beschreiben, in der ich nur wenige Parameter speichern kann (dh der Kreis wird als centerX, centerY, radius beschrieben, mit denen ich ihn leicht zeichnen kann, aber mit komplexeren Formen, die ich nicht trage Ich habe mir überlegt, die gesamten Canvas-Daten mit context.getImageData.data pixelweise zu speichern, dann die im Artikel beschriebene Methode (polare Transformation, ..., zurück zum kartesischen System) zu verwenden und die gesamte Szene in zu setzen Zeichenfläche mit canvas.putImageData-Methode.
Aber bevor ich dies tatsächlich anwende, möchte ich fragen, ob es überhaupt mit Canvas (kein Webgl) und Javascript möglich ist, Schatten dynamisch (Lichtquelle, die sich über den Bildschirm bewegt) auf diese Weise ohne starken FPS-Verlust zu erzeugen (ich kann mir vorstellen, dass diese Methode ziemlich gut funktioniert Für Standbilder, aber in dem Moment, in dem ich es jedes Mal tun muss, wenn sich eine Lichtquelle bewegt, bin ich mir nicht sicher, ob Javascript + Canvas dies in angemessener Zeit bewältigen kann, insbesondere wenn ich Informationen gefunden habe, dass putImageData und getImageData ziemlich langsam sind.
Oder wenn jemand versucht hat, dynamische Schatten in HTML5 + js auf unterschiedliche Weise zu erstellen, würde ich mich auch über Ihre Vorschläge dazu freuen (ich mache das derzeit auf ähnliche Weise wie unter http://ncase.me/sight-and- beschrieben) Licht / , obwohl ich einige Probleme mit konkaven Formen habe :().
Das wird furchtbar lang, ich hoffe ich habe mich gut genug erklärt.
Vielen Dank für jeden Rat, den Sie uns geben können, und es tut mir leid, dass mein Beitrag so groß geworden ist, obwohl ich nur eine Frage stelle.
EDIT: Vergessen zu erwähnen, ich suche nur nach 2d Lösung.