NativeScript Canvas
Powered by
Installation
ns plugin add @nativescript/canvas
Note min ios support 11 | min android support 21
IMPORTANT: ensure you include xmlns:canvas="@nativescript/canvas" on the Page element for core {N}
Usage
<canvas:Canvas id="canvas" style="width:100%; height:100%" width="100%" height="100%" ready="canvasReady"/>
2D
let ctx;
let canvas;
export function canvasReady(args) {
console.log('canvas ready');
canvas = args.object;
console.log(canvas);
ctx = canvas.getContext('2d');
ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 150, 100);
}
WEBGL
let gl;
let canvas;
export function canvasReady(args) {
console.log('canvas ready');
canvas = args.object;
gl = canvas.getContext('webgl');
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
gl.clearColor(0.0, 0.5, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
}
WebGPU
Note min ios support 11 | min android support 27
import type { GPUDevice, GPUAdapter } from '@nativescript/canvas';
import { Screen } from '@nativescript/core';
let canvas;
let device: GPUDevice;
export async function canvasReady(args) {
console.log('canvas ready');
canvas = args.object;
const adapter: GPUAdapter = (await navigator.gpu.requestAdapter()) as never;
device = (await adapter.requestDevice()) as never;
const devicePixelRatio = Screen.mainScreen.scale;
canvas.width = canvas.clientWidth * devicePixelRatio;
canvas.height = canvas.clientHeight * devicePixelRatio;
const context = canvas.getContext('webgpu');
const capabilities = this.getCapabilities(device);
context.configure({
device,
format: presentationFormat,
});
context.presentSurface();
}
API