37 lines
853 B
TypeScript
37 lines
853 B
TypeScript
import { createCanvas, loadImageData } from "@common/display/canvas";
|
|
import life from "./life.c";
|
|
|
|
let context: CanvasRenderingContext2D | null;
|
|
let imageData: ImageData;
|
|
|
|
export default function main() {
|
|
const imageDataPtr = life.initField();
|
|
imageData = loadImageData(life.data, imageDataPtr);
|
|
|
|
const canvas = createCanvas(imageData.width, imageData.height);
|
|
context = canvas.getContext('2d');
|
|
|
|
console.log(life, imageData);
|
|
|
|
requestAnimationFrame(loop);
|
|
}
|
|
|
|
let sum = 0;
|
|
let count = 0;
|
|
|
|
async function loop() {
|
|
const start = performance.now();
|
|
|
|
life.step();
|
|
|
|
context?.putImageData(imageData, 0, 0);
|
|
context?.clearRect(0, 0, 35, 15);
|
|
|
|
const end = performance.now();
|
|
|
|
sum += end - start;
|
|
count++;
|
|
|
|
context?.fillText(`${(sum / count).toFixed(1)} ms`, 2, 10);
|
|
requestAnimationFrame(loop);
|
|
} |