рдХреИрдирд╡рд╛рд╕ 2 рдбреА рдкрд░ рдкреНрд░реЗрдВрдбрд░реЗрдВрдбрд░

рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдмрдирд╛рдП рдЧрдП 2 рдбреА рдПрдиреАрдореЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рд╛ред


рдирд╛рдпрдХ рдХреА рдЫрд╡рд┐


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреГрд╢реНрдп - prerenderред


"рдФрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ?" - рд╣рдордиреЗ рдПрдХ рджреЛрд╕реНрдд рдХреЗ рд╕рд╛рде рд╕реЛрдЪрд╛ рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рдпрд╣реА рд╣реБрдЖред


рд▓рд╛рдЗрд╡ рдбреЗрдореЛ


amedomary.ru/prerender-canvas


рдХреЛрдб v1.0


рдкреЗрдЬ рдЦреБрдж рдЧрд┐рддреБрдм рдкрд░ рд╣реИ ред


рддрд░реНрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕реЗ 2 рдЪрд░рдгреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


рдЪрд░рдг 1 - рд╣рдорд╛рд░реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ рдЪрд┐рддреНрд░реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ


рдЪрд░рдг 1 - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб
  function renderLoop() {
    draw();

    // create prerender images
    canvasPrerender.toBlob(blob => {
      const reader = new FileReader();
      reader.readAsDataURL(blob);

      reader.onload = function() {
        const image = document.createElement("img");
        image.src = reader.result;
        prerenderArr.push(image);
      };
    });

    if (prerenderIsCompleted) {
      requestAnimationFrame(renderLoop);
    } else {
      requestAnimationFrame(drawPreImg);
    }
  }

2 тАФ тАФ


2 - javascript
  function drawPreImg() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.drawImage(prerenderArr[i], 0, 0);

    requestAnimationFrame(drawPreImg);
  }


Analytic


. macbook 13 2019 .


.


FPS


Fps "" .


Fps "" (prerender): 14-22
Fps "" ( ): 58-60


рдПрдлрдкреАрдПрд╕ рдХрд╛рдЙрдВрдЯрд░

, live demo.



Prerender тАФ 9
тАФ 3
тАФ 12 ( live demo)


CPU / Performance


рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗрд╡рд▓ рдкреНрд░реАрд░реЗрдиреНрдбрд░ рдЪрд░рдг рдореЗрдВ рдЧреНрд░рд╕реНрдд рд╣реИред рддреИрдпрд╛рд░ рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред


рдкреНрд░рджрд░реНрд╢рди - рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

рдкреНрд░рджрд░реНрд╢рди


рдпрд╛рдж


рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрд░реА рдЪреАрдЬрд╝ рд╣реЛрддреА рд╣реИ:
~ 432/2 = 200 рдлреНрд░реЗрдо
~ 25 mb


рдкреНрд░рджрд░реНрд╢рди


рдирд┐рд╖реНрдХрд░реНрд╖


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ рдФрд░ рдпрд╣ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдХреЛ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛ - рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


рдкреБрдирд╢реНрдЪ


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ - рд▓рд┐рдЦреЗрдВ :)


All Articles