Toon posts:

HTML5 Canvas animatie in Firefox 4

Pagina: 1
Acties:

  • boontje88
  • Registratie: November 2003
  • Laatst online: 28-05 21:38
Ik heb een animatie dmv javascript en een canvas element gemaakt. De animatie bestaat uit een x aantal 24-bit PNG’s in de vorm van wolkjes die naar de onderkant en zijkant van het scherm ‘drijven’. Hierin heb ik een soort perspectief proberen aan te brengen door te spelen met afmeting, bewegingssnelheid en, wellicht belangrijk voor het verhaal, transparantie.

Voor het tekenen en animeren heb ik ongeveer dezelfde aanpak gebruik zoals in de IE9 Fish Tank demo. Dit komt er op neer dat ieder frame de canvas gecleared wordt en vervolgens alle objecten opnieuw in de canvas geplaatst worden. Opzich een redelijk intensief scriptje, maar met GPU versnelling is het resultaat nog niet gek.

Ik heb de animatie in verschillende browsers bekeken en alle browsers die canvas ondersteunen geven het geheel goed weer (snelheid soms daargelaten), behalve Firefox 4. In een paar computer configuraties zijn er geen problemen, maar in andere setups zijn er vreemde scanline achtige strepen door de wolken te zien (screenshot).

De posities van de objecten (wolken) worden niet op hele pixels afgerond voordat ze op het canvas worden gezet. Een x-coordinaat kan dus bijv. een waarde van 221.740932 hebben. Hier heb ik allereerst de oplossing in gezocht, om dus deze waardes af te ronden op hele pixels. Dit was niet de oplossing.

Ik heb verder gezocht naar meer mensen die met dit probleem liepen en het op internet gepost hebben, maar ik kon er niets over vinden. Ik zou verder ook niet weten in welke richting ik een oplossing of oorzaak zou moeten zoeken. Een setup waar ik de strepen niet te zien kreeg was een Win7-64 met AMD955 en HD4850. Op mijn workstation met Win7-64, i7 en HD5770 had ik ze wel en ook op een laptop met i7 en Quadro 880M. Het is dus niet zo simpel te stellen dat merk GPU het beïnvloed.

Ik heb de animatie even geïsoleerd en online gezet. Deze is hier te vinden. Misschien dat iemand er iets zinnigs over kan zeggen?

  • RobIII
  • Registratie: December 2001
  • Laatst online: 01:34

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Het enige dat me zo snel op valt is dat de png steeds opnieuw geladen wordt terwijl dat niet nodig zou moeten zijn met de juiste caching headers. Of 't met je probleem te maken heeft weet ik niet (maar lijkt me stug maar zeg nooit nooit :P ).
Excuus, dat was bij "Method 1" en wrsch. een firebug-bug :P

VV Met PierreAronnax hier beneden; ik zou 't toch als eerst zoeken in de 'halve pixels' richting. Ik heb helaas het probleem hier niet, dus ik kan ook niet zeggen of 't afronden op hele pixels 't probleem oplost :P

[Voor 47% gewijzigd door RobIII op 26-05-2011 19:02]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • PierreAronnax
  • Registratie: Maart 2002
  • Niet online
Hoe zeker ben je er van dat afronden niet de oplossing is?

Als ik regel 26 van cloud.js vervang door:
JavaScript:
26
cloudcanvas[0].getContext('2d').drawImage(img, Math.round(this.x), Math.round(this.y), Math.round(this.s), Math.round(this.s));

zijn bij mij de strepen weg. :)

Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:20

MueR

Moderator Devschuur®

is niet lief

FWIW: In FF5b is dit probleem niet te reproduceren.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


  • boontje88
  • Registratie: November 2003
  • Laatst online: 28-05 21:38
Thx voor de snelle replies! Het afronden werkt inderdaad wel, ik denk dat ik in mijn eerdere tests de afmeting ben vergeten en alleen x en y heb afgerond 8)7

Ik heb zelf nog even wat zitten vogelen in Firefox en kwam erachter dat met hardware acceleratie uitgeschakeld de strepen ook weg zijn. Ik weet eigenlijk niet zo goed of onafgeronde pixelwaarden in de standaard zijn toegestaan, maar misschien dat er iets in de hardware acceleratie van Firefox 4.0.1 nog niet helemaal goed gaat.

[edit]
@MueR: na je tip heb ik zelf 5b ook even geinstalleerd en daar is het probleem inderdaad niet aanwezig (onafgerond). In zijn geheel is de ervaring op de pagina trouwens een stuk beter in 5b, geen flikkerende menuutjes meer.

[Voor 19% gewijzigd door boontje88 op 26-05-2011 19:24]



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee