【发布时间】:2020-03-20 06:39:23
【问题描述】:
我想用 p5 显示两件东西,一件是 2D 背景,另一件是 3D WebGL 前景,两者都是由 p5 生成的。我注意到的是,即使我在 draw() 函数中在 3D 内容之前绘制 2D 背景,当调用 rotateX() 或 rotateY() 时,3D 内容仍然会被背景部分覆盖。它看起来像这样:
我怀疑发生的事情是 2d 和 3d 的东西都在同一个 z 平面上,因此当前景旋转时,其中一些被背景覆盖,与被覆盖的部分相比,它现在位于前面。
所以我的问题是我怎样才能将背景完全保留在后面(即无论旋转如何都不覆盖前景)?
下面是我当前的实现,2d 背景是在屏幕外画布中生成的,然后使用image() 放在生成 3d 内容的主画布上,但我会采取任何其他方法。
let bg;
p.setup = () => {
p.createCanvas(width,height,p.WEBGL);
bg = p.createGraphics(width,height);
}
p.draw = () => {
... // draw background bg
p.image(bg,x,y); // draw background on canvas
... // draw foreground
p.rotateX(degrees);//rotate
}
【问题讨论】:
标签: javascript p5.js