2017-07-29 2 views
-2

Nun, ich möchte eine background-image Tiefe festlegen, anstatt dieser degradierten Hintergrund. Ich habe viele Dinge ausprobiert, ich habe viele Antworten aus dieser Community ausprobiert, und keinesfalls ... das Ergebnis ist immer mit dem background-image nicht sichtbar oder über den Partikeln. Ich möchte nur, dass die background-image die aktuelle background-color ersetzt.So stellen Sie das Hintergrundbild auf Canvas ein

Ich wünsche, dass jemand mir mit dem richtigen Code helfen kann, danke und Entschuldigung für mein Englisch.

https://codepen.io/at80/pen/tqdmv

<canvas> 
+0

Willkommen bei Stack Overflow. Wenn Sie Hilfe zum Debuggen benötigen, müssen Sie ein [minimales nachprüfbares vollständiges Beispiel] erstellen (https://meta.stackoverflow.com/questions/349789/how-do-i-create-a-minimal-complete-verifyable-example) und setzen es ** in der Frage selbst **. Es ist nicht akzeptabel, nur einen Link zu Ihrem Code zu veröffentlichen. – gman

Antwort

0

ich voll und ganz in der Lage, nicht auf Ihre Frage zu beantworten, da es eine Menge von Shader-Code ist durch zu suchen.

Was Sie tun müssen, ist sicherzustellen, dass wenn ein Fragment etwas zeichnet, das kein Blatt ist (z. B. der Hintergrund), es einen Alpha-Wert von 0.0 hat. Am einfachsten wäre es, irgendwo gl_FragColor.a = 0.0; zu haben. Ich bin neu in OpenGL/WebGL, deshalb kann ich Ihnen nicht helfen, indem ich die genauen Standorte oder Methoden dafür finde.

Sie haben ziemlich viele Fragment-Shader und sie machen jeweils unterschiedliche Dinge. Der Shader <script id="bg_fsh" type="x-shader/x_fragment"> steuert nur den Hintergrund, reicht aber alleine nicht aus.

Sobald Sie es geschafft haben, den Hintergrund in den Fragment-Shadern transparent zu machen, können Sie ein Hintergrundbild irgendwie, wie auf einer <div>, die die Leinwand enthält, und es sollte durch zeigen.

+0

Ja, ich habe das gemacht, aber ich habe nur erreicht, dass der Hintergrund schwarz wird, in meinem Code habe ich es. – Menzezzz

+0

@Menzezz Sie können wahrscheinlich einen CSS-Füllmodus (Mix-Blend-Modus/Hintergrund-Blend-Modus) mit dem DOM-Element selbst wie "Bildschirm" verwenden, um Ihr endgültiges Bild mit der schwarzen Farbe zu mischen. Webgl + Blending kann jedoch in Bezug auf die Leistung etwas kostspielig sein. – K3N

+1

ich mache es !!! Ich habe gerade versucht, den Wert gl_FragColor.a zu ändern, aber alle Bildschirme werden schwarz ... ohne Blumen, aber ich denke, wenn ich es geändert habe, hatte ich kein Hintergrundbild. Jetzt, nachdem ich viele Dinge ausprobiert habe, habe ich es erneut versucht und ich erinnere mich dank dir an dieses Attribut. Und gerade als ich jetzt dachte oder ich es verließ, chang ich diesen Wert und funktioniert !! ty – Menzezzz

Verwandte Themen