JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/pixi.js/1.5.1/pixi.js"></script>
<script src="https://rawgit.com/mrdoob/stats.js/master/src/Stats.js"></script>
<canvas id="view"></canvas>
JavaScript
function init()
{
var width = 800;
var height = 800;
var PIXEL_SIZE = 3;
var canvas = document.getElementById("view");
var stage = new PIXI.Stage(0x000000);
var renderer = new PIXI.autoDetectRenderer(width, height, canvas, null, true);
var colors = ['rgb(0, 255, 255)', 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', 'rgb(0, 0, 255)'];
var textures = [];
var pixels = [];
var colorIndex = 0;
var textureCanvas = document.createElement('canvas');
textureCanvas.width = PIXEL_SIZE * colors.length;
textureCanvas.height = PIXEL_SIZE;
var textureCtx = textureCanvas.getContext('2d');
for (var i=0; i<colors.length; i++) {
textureCtx.fillStyle = colors[i];
textureCtx.fillRect(i*PIXEL_SIZE, 0, PIXEL_SIZE, PIXEL_SIZE);
}
var baseTexture = new PIXI.BaseTexture.fromCanvas(textureCanvas);
for (var i=0; i<colors.length; i++) {
textures.push(new PIXI.Texture(baseTexture, new PIXI.Rectangle(i*PIXEL_SIZE, 0, PIXEL_SIZE, PIXEL_SIZE)));
}
function update() {
for (var y=0; y<height/PIXEL_SIZE; y++) {
for (var x=0; x<width/PIXEL_SIZE; x++) {
colorIndex += 1;
if (colorIndex >= colors.length) colorIndex = 0;
pixels[x + y*Math.ceil(width/PIXEL_SIZE)].setTexture(textures[colorIndex]);
}
}
renderer.render(stage);
stats.end();
requestAnimationFrame(update);
}
function draw() {
for (var y=0; y<height/PIXEL_SIZE; y++) {
for (var x=0; x<width/PIXEL_SIZE; x++) {
var sprite = new PIXI.Sprite(textures[0]);
pixels[x + y*Math.ceil(width/PIXEL_SIZE)] = sprite;
sprite.x = x*PIXEL_SIZE;
sprite.y = y*PIXEL_SIZE;
stage.addChild(sprite);
}
}
renderer.render(stage);
}
draw();
...