Pixi.js: Ändern der Auflösung des Renderers

Erstellt am 6. MĂ€rz 2017  Â·  16Kommentare  Â·  Quelle: pixijs/pixi.js

Gibt es eine Möglichkeit, die Auflösung des Renderers zu aktualisieren? Ich habe versucht, renderer.resolution = window.devicePixelRatio zu verwenden, aber dadurch wird der Bildschirm nur weiß blinken.

đŸ€” Question

Hilfreichster Kommentar

Ja, so ist es. Ich werde diese Funktion spĂ€ter ausfĂŒhren, aber dies könnte vorerst funktionieren:

renderer.resolution = 2;
renderer.rootRenderTarget.resolution = 2;
renderer.resize(w-1, h);
renderer.resize(w, h);

Vergessen Sie nicht, ALLE FILTERAUFLÖSUNGEN zu aktualisieren.

Alle 16 Kommentare

Die beste vorĂŒbergehende Problemumgehung, die ich mir ausgedacht habe, besteht darin, den Renderer zu zerstören und neu zu erstellen und die neue Auflösung an autoDetectRenderer zu ĂŒbergeben. Dies funktioniert, ist aber möglicherweise nicht der effizienteste Weg, dies zu tun. Außerdem gibt es möglicherweise immer noch ein Problem beim wiederholten Zerstören und Neuerstellen des Renderers: # 2233

Es scheint, dass es dafĂŒr einen einfachen Funktionsaufruf wie renderer.setResolution geben sollte, der den Aufwand fĂŒr zusĂ€tzliche Verarbeitung und tote Ressourcen minimiert.

Hallo @jaspervaz! Neugierig, was Ihr Anwendungsfall dafĂŒr ist?
Prost!

Ja, so ist es. Ich werde diese Funktion spĂ€ter ausfĂŒhren, aber dies könnte vorerst funktionieren:

renderer.resolution = 2;
renderer.rootRenderTarget.resolution = 2;
renderer.resize(w-1, h);
renderer.resize(w, h);

Vergessen Sie nicht, ALLE FILTERAUFLÖSUNGEN zu aktualisieren.

Und vergessen Sie nicht, auch die Auflösung des Interaktions-Plugins zu aktualisieren

@ Jaspervaz

Genau, Zoom Àndert sich, das möchte ich auch tun :)
Nehmen wir zunÀchst an, dass "renderer.screen" ein Rechteck des Bildschirms in logischen Koordinaten ist, wÀhrend "renderer.view" Canvas ist und somit Breite und Höhe mit der Auflösung multipliziert werden.

ÜberprĂŒfen Sie dies folgendermaßen, damit es fĂŒr beide Renderer funktioniert:

if (renderer.rootRenderTarget) { renderer.rootRenderTarget.resolution = newResoultion; }

- -
Auch ohne die folgende Zeile scheint es genauso zu funktionieren, da das Zoomen sowohl die Auflösung als auch die Fensterabmessungen Àndert, aber möglicherweise erfordern andere AnwendungsfÀlle dies:

renderer.resize(w-1, h);

Ja, ich stimme zu.

@ivanpopelyshev Ich möchte den Bildschirm skalieren.
Wenn Sie Ihre Methode verwenden, wird die Leinwand unscharf.
Mit meiner Methode kann die Auflösung nicht grĂ¶ĂŸer als 20 sein

https://jsfiddle.net/starCoding/p49u34hd/8/

@starInEcust Warum benötigen Sie eine Auflösung von mehr als 20? Bei der Auflösung geht es nicht um Skalierung, sondern um den Browser-Zoom. Die Skalierung ist Teil der BĂŒhnentransformation.

@ivanpopelyshev Ich möchte den Renderer vergrĂ¶ĂŸern und den Text behalten, und SVG-Bilder werden nicht verzerrt

@starInEcust Ich habe diese Probleme durch manuelles Anpassen von Skalierung und SchriftgrĂ¶ĂŸe gelöst.

Es gibt auch eine neue Lösung: Verwenden Sie SDF-Schriftarten. https://github.com/PixelsCommander/pixi-sdf-text

@ivanpopelyshev wie wĂ€re es mit svg? Ich möchte nur einen Texteditor mit cooler Animation erstellen, in der Druckvorschau kann vergrĂ¶ĂŸert und verkleinert werden, hat aber keinen Einfluss auf den Satz.
Und gibt es ein Problem mit der Verwendung der AuflösungsvergrĂ¶ĂŸerung?

Das ist ein sehr ungewöhnlicher Anwendungsfall fĂŒr Pixi. Sie mĂŒssen den Zoom durch "stage.scale" Ă€ndern und nur die Auflösung von SVG und Text anpassen, nicht die Auflösung des gesamten Renderers. In Ihrem Fall ist die BildschirmgrĂ¶ĂŸe des Renderers festgelegt, und wenn Sie die Auflösung Ă€ndern, werden die Leinwandabmessungen zu groß, und Sie erreichen eine GrĂ¶ĂŸe von 16 x 16 KB!

Ich habe SVG nicht in Pixi verwendet, daher weiß ich nicht, wie ich die Auflösung dafĂŒr anpassen soll :)

Vielen Dank Vielleicht sollte ich eine Ausgabe eröffnen, um diese Frage zu diskutieren :(

Wenn Sie dieses Problem schließen möchten, da es beantwortet zu sein scheint, können Sie ein weiteres öffnen, wenn Sie eine andere Frage haben!

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine AktivitĂ€t mehr stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe fĂŒr verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen