Renderer
Creates a PIXI.Renderer
This is an alternative to using the Application component. It allows you to use a custom PIXI.Renderer
instance but – like its native class – it will not start the render loop or create the root container for you. You will need to do this yourself.
Usage
Basic
<script> import { Renderer, Container, Ticker, Text } from 'svelte-pixi' import DraggableCircle from '$lib/site/DraggableCircle.svelte' let renderer let stage </script> <Renderer bind:instance={renderer} bind:stage={stage} width={400} height={400} antialias > <!-- use our own ticker to control the render loop --> <Ticker on:tick={() => { renderer.render(stage) }}> <!-- the root container is referred to as the "stage", child components can access it with getStage() --> <Container bind:instance={stage}> <Text x={200} y={300} text="Click and drag" style={{ fill: 'white' }} anchor={0.5} /> <DraggableCircle x={200} y={200}/> </Container> </Ticker> </Renderer>
Custom View
If you want to customize the element that the canvas is rendered into, you can use the view
slot. The canvas will be appended as a child of the slot element.
<script> import { Renderer, Container, Ticker, Text } from 'svelte-pixi' let renderer let stage </script> <Renderer bind:instance={renderer} bind:stage={stage} width={400} height={400} antialias > <div slot="view" class="custom"> <!-- canvas will be placed here --> </div> <!-- pixi components go here --> <Container bind:instance={stage}> <Ticker on:tick={() => { renderer.render(stage) }} /> <Text x={200} y={200} anchor={0.5} text="Hello World" style={{ fill: 'white'}} /> </Container> </Renderer> <style> .custom :global(canvas) { border: 5px solid tomato; border-radius: 5px; } </style>
Render on Demand
The Application
component supports rendering on demand. While Renderer
doesn’t offer the same render="demand"
prop,
we can still implement this ourselves:
<script> import { Renderer, Container, Ticker, Text } from 'svelte-pixi' import DraggableCircle from '$lib/site/DraggableCircle.svelte' let renderer let stage let needsRender = true </script> <Renderer bind:instance={renderer} width={400} height={400} antialias on:invalidate={() => { needsRender = true }} > <Ticker on:tick={() => { if (needsRender) { renderer.render(stage) needsRender = false // check out the console console.log('render') } }} > <Container bind:instance={stage}> <Text x={200} y={300} text="Click and drag" style={{ fill: 'white' }} anchor={0.5} /> <DraggableCircle x={200} y={200}/> </Container> </Ticker> </Renderer>
See Render on Demand for more information.
Component API
Props
Name | Type | Default | Description |
---|---|---|---|
antialias | boolean
|
false |
Sets antialias |
autoDensity | boolean
|
true |
Resizes renderer view in CSS pixels to allow for resolutions other than 1. |
backgroundAlpha | number
|
1 |
Value from 0 (fully transparent) to 1 (fully opaque). |
backgroundColor | number
|
0x000000 |
The background color of the rendered area (shown if not transparent). |
clearBeforeRender | boolean
|
This sets if the renderer will clear the canvas or not before the new render pass. | |
forceCanvas | boolean
|
false |
prevents selection of WebGL renderer, even if such is present, this option only is available when using pixi.js-legacy or @pixi/canvas-renderer modules, otherwise it is ignored. |
height | number
|
600 |
The height of the renderers view. |
instance | The PIXI.Renderer instance. Can be set or bound to. By default it uses PIXI.autoDetectRenderer() |
||
powerPreference | WebGLPowerPreference
|
Parameter passed to webgl context, set to "high-performance" for devices with dual graphics card. (WebGL only). |
|
preserveDrawingBuffer | boolean
|
false |
Enables drawing buffer preservation, enable this if you need to call toDataUrl on the WebGL context. |
resolution | number
|
The resolution / device pixel ratio of the renderer. | |
useContextAlpha | boolean
"notMultiplied"
|
Pass-through value for canvas' context alpha property. If you want to set transparency, please use backgroundAlpha. This option is for cases where the canvas needs to be opaque, possibly for performance reasons on some older devices. |
|
width | number
|
800 |
The width of the renderers view. |
Slots
Name | Props | Fallback |
---|---|---|
default | ||
view |
Events
Name | Type | Detail |
---|---|---|
invalidate | dispatched |
|
postrender | dispatched |
|
prerender | dispatched |