--- 3D PGraphics on 2D Environment --- PGraphics pg; float r = 0; void setup() { size(200, 200); pg = createGraphics(80, 80, P3D); } void draw() { fill(0, 12); rect(0, 0, width, height); fill(255); noStroke(); ellipse(mouseX, mouseY, 60, 60); pg.beginDraw(); pg.background(255, 0, 0); pg.noFill(); pg.stroke(255); pg.pushMatrix(); pg.translate(40, 40, 0); pg.rotateY(mouseY); pg.rotateX(mouseX); pg.box(20); pg.popMatrix(); pg.endDraw(); image(pg, 60, 60); } --- 2D PGraphics on 3D Environment --- PGraphics pg; float r = 0; float c = 0; void setup() { size(200, 200, P3D); pg = createGraphics(80, 80); } void draw() { background(204); fill(0, 0, c, 255); noStroke(); pushMatrix(); translate(20, 20, 0); rotateY(mouseX); rotateX(mouseY); box(20); popMatrix(); pg.beginDraw(); pg.background(0, 0, 0); pg.stroke(255); pg.fill(0, 0, c, 255); pg.ellipse(mouseX-60, mouseY-60, 60, 60); pg.endDraw(); image(pg, 60, 60); c += 1; } --- 3D PGraphics on 3D Environment --- PGraphics pg; float c = 0; void setup() { size(200, 200, P3D); pg = createGraphics(80, 80, P3D); } void draw() { background(204); fill(0, 0, c, 255); noStroke(); pushMatrix(); translate(20, 20, 0); rotateY(mouseX); rotateX(mouseY); box(20); popMatrix(); pg.beginDraw(); pg.background(0); pg.noFill(); pg.stroke(255); pg.pushMatrix(); pg.translate(40, 40, 0); pg.rotateY(mouseY); pg.rotateX(mouseX); pg.box(20); pg.popMatrix(); pg.endDraw(); image(pg, 60, 60); c++; }