Lavoro su uno sparatutto in 2D con molti oggetti in movimento sullo schermo (proiettili, ecc.).Vsync in Flex/Flash/AS3?
Uso BitmapData.copyPixels (...) per eseguire il rendering dell'intero schermo su un buffer: BitmapData. Quindi "copyPixels" da "buffer" alla schermata: BitmapData. Il framerate è 60.
private var bitmap:Bitmap = new Bitmap();
private var buffer:Bitmap = new Bitmap();
private function start():void {
addChild(bitmap);
}
private function onEnterFrame():void {
// render into "buffer"
// copy "buffer" -> "bitmap"
}
Il problema è che gli sprite sono lacerando: una parte di uno sprite ottenuto spostato orizzontalmente.
Sembra un gioco per PC con VSYNC disattivato.
Qualcuno ha risolto questo problema?
UPDATE: la questione non riguarda le prestazioni, ma di sbarazzarsi di screen tearing. [!]
UPDATE: Ho creato another question e qui si può provare entrambe le implementazioni: usando modo Flash o BitmapData + copyPixels()
Lo strappo dello schermo è correlato alle prestazioni. Questo è l'unico modo per aggiustare la tua lacrimazione. – Kekoa
@Kekoa Non posso essere d'accordo. Le prestazioni non hanno nulla a che fare con lo strappo dello schermo, perché uso il doppio buffer. In caso di prestazioni scadenti avrei un FPS inferiore ma non uno strappo dello schermo. – oshyshko
gli altri hanno ragione, che questo approccio non è molto adatto per il flash player ... tuttavia, sono stupito, non funziona affatto ... alcune domande: - hai provato a bloccare il bitmapData che sei attingere? (se no, questo può essere di grande aiuto!) - stai usando bitmap trasparenti? (killer delle prestazioni generali) - dir provate 'Stage :: invalidate' e il rendering su' Event.RENDER' invece del rendering? greetz back2dos – back2dos