Pixi.js: Mudando a resolução do renderizador

Criado em 6 mar. 2017  ·  16Comentários  ·  Fonte: pixijs/pixi.js

Existe uma maneira de atualizar a resolução do renderizador? Tentei renderer.resolution = window.devicePixelRatio, mas ele apenas faz a tela piscar em branco.

🤔 Question

Comentários muito úteis

Sim, ele é. Farei essa função mais tarde, mas pode funcionar por agora:

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

Não se esqueça de atualizar TODAS AS RESOLUÇÕES DOS FILTROS.

Todos 16 comentários

A melhor solução temporária que criei é destruir e recriar o renderizador, passando a nova resolução para autoDetectRenderer. Isso funciona, mas talvez não seja a maneira mais eficiente de fazer isso. Além disso, talvez ainda haja um problema em destruir e recriar repetidamente o renderizador: # 2233

Parece que deveria haver uma chamada de função simples para fazer isso, como renderer.setResolution, que minimiza a quantidade de processamento extra e recursos mortos.

Olá @jaspervaz! Curioso para saber qual é o seu caso de uso para isso?
Felicidades!

Sim, ele é. Farei essa função mais tarde, mas pode funcionar por agora:

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

Não se esqueça de atualizar TODAS AS RESOLUÇÕES DOS FILTROS.

E não se esqueça de atualizar a resolução do plugin de interação também

@jaspervaz

EXATAMENTE, o zoom muda, é o que eu também quero fazer :)
Por enquanto, suponha que "renderer.screen" seja o retângulo da tela em coordenadas lógicas, enquanto "renderer.view" é uma tela e, portanto, a largura e a altura são multiplicadas pela resolução.

Marque assim para que funcione para ambos os renderizadores:

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

-
Além disso, parece funcionar da mesma forma sem a seguinte linha, acho que porque o zoom muda a resolução e as dimensões da janela, mas talvez outros casos de uso exijam isso:

renderer.resize(w-1, h);

Sim eu concordo.

@ivanpopelyshev Quero dimensionar a tela.
Usar seu método tornará a tela desfocada.
Usando o meu método, a resolução não pode ser maior que 20

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

@starInEcust Por que você precisa de resolução superior a 20? A resolução não é sobre escala, mas sim o zoom do navegador. A escala faz parte da transformação do palco.

@ivanpopelyshev eu quero aumentar o renderizador e manter o texto e as imagens SVG não serão distorcidas

@starInEcust Resolvi esse tipo de problema ajustando manualmente a escala e o tamanho da fonte.

Também há uma nova solução: use fontes SDF. https://github.com/PixelsCommander/pixi-sdf-text

@ivanpopelyshev e svg? Eu só quero fazer um editor de texto com animação legal, na visualização da impressão pode aumentar e diminuir o zoom, mas não afeta a composição.
E há algum problema com o uso da ampliação de resolução?

Esse é um caso de uso muito incomum para pixi. Você deve alterar o zoom em "stage.scale" e ajustar a resolução apenas de SVG e texto, não a resolução de todo o renderizador. No seu caso, o tamanho da tela do renderizador é fixo, e quando você altera a resolução, as dimensões da tela estão ficando muito grandes, você está atingindo o tamanho de 16k x 16k pixels!

Não usei SVG no pixi, então não sei como ajustar a resolução para ele :)

Muito obrigado! Talvez eu deva abrir uma edição para discutir esta questão :(

Indo para fechar este assunto porque parece respondido, fique à vontade para abrir outro se você tiver outra pergunta!

Este tópico foi bloqueado automaticamente, pois não houve nenhuma atividade recente depois que ele foi fechado. Abra um novo problema para bugs relacionados.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

neciszhang picture neciszhang  ·  3Comentários

gaccob picture gaccob  ·  3Comentários

Makio64 picture Makio64  ·  3Comentários

finscn picture finscn  ·  3Comentários

softshape picture softshape  ·  3Comentários