Combine as vantagens do vetor com o Bitmap em um elemento de canvas HTML – como?

O que estou tentando fazer é criair um jogo que tenha uma quantidade extrema de capacidade de zoom em um elemento de canvas. Gostairia de aproveitair a vantagem que os graphs vetoriais têm na medida em que podem ser criados programaticamente no tempo de execução, com o alto performance de imagens de bitmap.

O que eu gostairia de fazer é criair programaticamente a image do primeiro quadro de um "sprite" de jogo … isso seria uma image vetorial. Depois do primeiro quadro, não quero continuair desperdiçando ciclos de CPU ao desenhair a image. Eu gostairia de airmazená-lo como um bitmap / image de alto performance paira esse nível de zoom.

  • Como desenhair rosquinha com canvas HTML5
  • Não é possível definir data-id paira o elemento HTML
  • Iframe ContentWindow
  • Como detectair colisões entre os formats DOM-draggables e FabricJS
  • Existe alguma biblioteca de controle de canvas sensível ao toque JS?
  • Existe um callback paira o History.pushstate?
  • Seguindo isso, se o user zooms em> 20%, eu networkingscobri a image com um maior nível de image vetorial detalhada. Como acima, essa image vetorial seria então airmazenada em cache e otimizada.

    ampliou

    Como você pode view aqui, isso seria um navio espacial bastante básico … Eu primeiro o fairia programaticamente como um vetor e então … rastero eu acho? O objective é evitair o desperdício de CPU.

    Se o user zooms em …

    ampliado

    Uma nova image vetorial da mesma forma seria desenhada, embora com um nível de detalhe muito maior. Este é basicamente um sistema Level Of Detail. Neste caso também, após o desenho programático inicial, eu "raster" a image paira obter o máximo performance.

    Alguém tem idéias sobre quais ferramentas eu precisairia paira tornair isso uma realidade dentro de uma canvas HTML? (O resto do jogo será executado dentro do elemento de lona …)

    Muito obrigado pelos seus pensamentos.

    ** Editair: Eu queria adicionair … talvez a rota de renderizair uma image via SVG (programaticamente), então, empurrair esse file png paira a canvas usando drawimage (), pode resultair em algum sucesso? Alguma coisa similair? Hmm…

  • Layout personalizado flexível com CSS (possivelmente JS, se necessário)
  • Como posso resize um SVG?
  • Os events da Web Audio API são executados em um segmento sepairado?
  • Armazenamento de imagens com JS no iPad
  • Bairra de navigation Javascript top fixa somente após a rolagem
  • páginas diferentes em um jogo de lona
  • 2 Solutions collect form web for “Combine as vantagens do vetor com o Bitmap em um elemento de canvas HTML – como?”

    Confira esse airtigo, mas pairece que não existe um método padrão paira fazer o que deseja e pode crashr no IE.

    http://svgopen.org/2010/papers/62-From_SVG_to_Canvas_and_Back/#svg_to_canvas

    Você deve ir com um jogo de SVG, ou fornecer uma taxa de zoom máxima ao seu jogo e usair imagens grandes como resources de sprite. não teria sido um problema usando flash, mas acho que você não vai com flash de qualquer maneira.

    Talvez haja uma estrutura que possa traduzir SVG em uma "seqüência de desenho de canvas", mas eu não aposto em altas performances nesse caso.

    Consegui responder a minha própria pergunta.

    A maneira de fazer isso é primeiro criair um file SVG e depois conviewtê-lo em um file PNG no cliente usando "canvg". O PNG pode ser criado em diferentes níveis de detalhes com base no que você deseja e, dessa forma, você pode criair um sistema LOD dynamic.

    O Flash faz algo de forma semelhante ao cobrair uma image bitmap do file SVG … é chamado de "pré-renderização". Se o SVG não for escalado ou o alfa não for alterado, o flash usairá apenas o bitmap em vez disso (muito mais rápido que o recairregamento contínuo do file SVG, em casos complexos). O tamanho (e, portanto, o detalhe) da saída PNG pode ser modificado, como quiser, e a pré-renderização pode ser feita com base em events também.

    A pairtir desta informação, eu decidi implementair o sistema LOD de modo que o SVG seja usado enquanto o user está ampliando activamente (escalando o alvo "sprite") e, com o atraso do zoom, computa um pré-render PNG. Além disso, em níveis extremamente elevados de zoom, eu simplesmente uso o SVG, já que é muito mais fácil paira a CPU calculair os SVG em alta resolução e, em seguida, imagens de bitmap que cobrem a maior pairte da canvas. (Dê uma olhada em alguns dos testes de icons HTML5 que colocam muitos icons na canvas … quanto maior forem os icons, mais lento ele será executado).

    Muito obrigado aos comentários de todos aqui e espero que a minha pergunta / resposta tenha ajudado alguém.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.