Liigu sisu juurde

Kerge vaade: lehed avanevad kiiresti ja ilma 3D-graafikata. Näitame kerget vaadet, sest 3D-graafika oleks selles seadmes aeglane. Sisu on sama.

Lülita 3D sisse

Valmistan graafikat ette. Esimesel külastusel võib see veidi aega võtta.

Henry Lõiv

Veebidisain ja arendus

Kiirvastus

Miks Three.js annab pärast lehtede vahetamist „context lost” vea?

3D ja WebGL 1 min lugemist

Kui viga ilmub pärast korduvat SPA navigeerimist, kontrolli ressursside ja renderdaja elutsüklit. Stseeni objekti eemaldamine ei vabasta automaatselt kõiki geomeetriaid, materjale ja tekstuure. Samas ei tõesta context lost üksinda mäluleket. 13

Korda sama liikumist

Ava 3D-vaade, lahku sellest ning korda seda mitu korda. Jälgi, kas juurde jäävad renderdajad, sündmusekuulajad või animatsioonitsüklid. renderer.info aitab jälgida ressursside arvu, kuid see ei ole täpne kogu GPU mälukulu mõõtur. 1

Korista omanikupõhiselt

Vaate lõpetamisel peata selle renderdustsükkel ja eemalda selle enda kuulajad. Vabasta ressursid, mida enam ei kasutata. Tekstuurid vajavad eraldi käsitlemist: materjali vabastamine ei tähenda kõigi selle tekstuuride vabastamist. 12

Ära vabasta pimesi ühiseid ressursse, mida järgmine vaade veel kasutab. Planeeri, kas renderdaja on kogu rakenduse ühine ressurss või konkreetse vaate oma. Mõlemal juhul peab omanik olema selge.

Valmista ette veaolukord

Kuula vajaduse korral webglcontextlost sündmust ja näita arusaadavat varuvaadet. Taastamine vajab rakenduses teadlikku käsitlemist; kasutaja ei peaks jääma tühja lõuendi ette. 3

Kui ressursside arv kordustel stabiliseerub, uuri edasi seadme ja draiveri käitumist. Ära nimeta iga kontekstikaotust automaatselt Three.js-i veaks või tõendatud mälulekkeks.

Seotud lugemine

3D-portfoolio tehniline kirjeldus inglise keeles

Allikad

  1. Three.js: disposing of GPU resources
  2. Three.js: resource cleanup
  3. MDN: webglcontextlost event

Faktid kontrollitud:

Räägime sinu projektist

Kirjelda oma projekti

Räägi, mida soovid luua või paremaks teha. Valmis lähteülesannet pole vaja — täpsustame töömahu ja järgmised sammud koos.

01 Millega saan aidata?
02 Mitu lehte on vaja?
03 Milliseid lisasid veebileht vajab? Vali kõik sobivad
04 Millal peab töö valmis olema?
05 Projekti üksikasjad
06 Sinu kontaktandmed

Päring on vastu võetud

Aitäh!

Päring on vastu võetud. Vastan e-posti teel tavaliselt 2 tööpäeva jooksul.