【发布时间】:2020-08-06 05:54:01
【问题描述】:
我正在尝试使用 pixi.js 创建一个可缩放的画布,其中矩形排列在网格中。一切都很顺利,除了网格会产生严重的波纹效果。我对 pixjs 和 webgl 的了解只是非常肤浅,但我怀疑抗锯齿的某些东西没有像我预期的那样工作。我正在使用预先在单独的画布中创建的 2048x2048px 纹理绘制矩形。我把它做得那么大,所以我这样做是为了让我可以一直放大,同时仍然有一个清晰的矩形。我也尝试过使用app.renderer.generateTexture(graphics),但得到了类似的结果。
黑色矩形是使用 pixi.js 绘制的,红色矩形是使用 SVG 作为参考绘制的。 SVG 中仍然会出现波纹,但要少得多。有什么想法可以让我更接近 SVG 版本的样子吗?你可以找到一个工作版本here。
这是我用来设置 pixi.js 应用程序的相关代码:
// PIXI SETUP
const app = new Application({
view: canvasRef,
width,
height,
transparent: true,
antialias: false,
autoDensity: true,
resolution: devicePixelRatio,
resizeTo: window
});
const particleContainer = new ParticleContainer(2500, {
scale: true,
position: true,
rotation: true,
uvs: true,
alpha: true
});
app.stage.addChild(particleContainer);
// TEXTURE
const size = 2048;
const canvas = document.createElement("canvas");
canvas.width = size;
canvas.height = size;
const ctx = canvas.getContext("2d");
ctx.fillStyle = "#000000";
ctx.fillRect(0, 0, size, size);
ctx.fill();
const texture = PIXI.Texture.from(canvas);
// RECTANGLE GRID
const size = 10;
for(let i=0; i<2500; i++) {
const particle = Sprite.from(texture);
particle.x = i % 50 * size * 1.5;
particle.y = Math.floor(i / 50) * size * 1.5;
particle.anchor.set(0);
particle.width = size;
particle.height = size;
parent.addChild(particle);
}
【问题讨论】:
-
尝试为大纹理生成mip贴图:pixijs.download/dev/docs/PIXI.html#.MIPMAP_MODES
标签: javascript html5-canvas pixi.js