7.4.2 • Published 1 month ago

@pixi/webworker v7.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

@pixi/webworker

pixi.js logo

The aim of this project is to provide a fast lightweight 2D library that works across all devices. The PixiJS renderer allows everyone to enjoy the power of hardware acceleration without prior knowledge of WebGL. Also, it's fast. Really fast.

We are now a part of the Open Collective and with your support you can help us make PixiJS even better. To make a donation, simply click the button below and we'll love you forever!

Setup

PixiJS can be installed with npm to integrate with Webpack, Browserify, Rollup, Electron, NW.js or other module backed environments.

Install

npm install @pixi/webworker

There is no default export. The correct way to import PixiJS is:

import * as PIXI from '@pixi/webworker'

Basic Usage Example

In index.js:

// Create a canvas element and insert it into DOM
const width = 800, height = 600;
const resolution = window.devicePixelRatio;
const canvas = document.createElement('canvas');
canvas.style.width = `${ width }px`;
canvas.style.height = `${ height }px`;
document.body.appendChild(canvas);

// Create the worker
const worker = new Worker('worker.js', { type: 'module' });
// Transfer canvas to the worker
const view = canvas.transferControlToOffscreen();
worker.postMessage({ width, height, resolution, view }, [view]);

In worker.js:

import { Application, Assets, Sprite } from '@pixi/webworker';

self.onmessage = async e => {
    // Recieve OffscreenCanvas from index.js
    const { width, height, resolution, view } = e.data;
    
    // The application will create a renderer using WebGL, if possible,
    // with a fallback to a canvas render. It will also setup the ticker
    // and the root stage PIXI.Container
    const app = new Application({ width, height, resolution, view });

    // load the texture we need
    const texture = await Assets.load('assets/bunny.png');

    // This creates a texture from a 'bunny.png' image
    const bunny = new Sprite(texture);

    // Setup the position of the bunny
    bunny.x = app.renderer.width / 2;
    bunny.y = app.renderer.height / 2;

    // Rotate around the center
    bunny.anchor.x = 0.5;
    bunny.anchor.y = 0.5;

    // Add the bunny to the scene we are building
    app.stage.addChild(bunny);

    // Listen for frame updates
    app.ticker.add(() => {
        // each frame we spin the bunny around a bit
        bunny.rotation += 0.01;
    });
}

License

This content is released under the (http://opensource.org/licenses/MIT) MIT License.