2013-12-23 11 views

回答

1

您可以通過創建一個PApplet實例並將其添加到新的JFrame窗口來打開第二個窗口。以下示例創建一個簡單的草圖,該草圖打開兩個窗口,並在其中一個窗口中稍微向左移動一個圓圈,並在第二個窗口的右側繪製一個圓圈。這些窗口可以被放置在不同的投影機

import javax.swing.JFrame; 

PFrame f; 

void setup() { 
    size(300,300); 
    PFrame f = new PFrame(); 
} 

void draw() { 
    background(0); 
    ellipse(140,150,100,100); 
} 

public class Second extends PApplet { 
    public void setup() { 
    size(300,300); 
    } 

    public void draw() { 
    background(0); 
    ellipse(160,150,100,100); 
    } 
} 

public class PFrame extends JFrame { 
    public PFrame() { 
    setBounds(0,0,300,300); 
    Second s = new Second(); 
    add(s); 
    s.init(); 
    show(); 
    } 
} 
0

我已經得到了從簡單的一些想法要複雜的多:

  1. 簡單地隔離繪圖命令/座標空間
  2. 使用不同的渲染層

方法1:簡單使用pushMatrix()/popMatrix()調用來隔離左側視圖,也許使用不同的值fo r中perspective()投影

這裏是一個非常粗略的例子來說明這個想法:

void setup(){ 
    size(200,100,P3D); 
    noFill(); 
} 
void draw(){ 
    background(255); 
    stroke(255,0,0); 
    //view 1 
    pushMatrix(); 
    camera(70.0, 0.0, 200.0, 50.0, 50.0, 0.0, 0.0, 1.0, 0.0); 
    drawBox(); 
    popMatrix(); 

    stroke(0,0,255); 
    //view 2 
    pushMatrix(); 
    camera(90.0, 0.0, 200.0, 50.0, 50.0, 0.0, 0.0, 1.0, 0.0); 
    translate(100,0,0);//move everything to the right 
    drawBox(); 
    popMatrix(); 
} 
void drawBox(){ 
    pushMatrix(); 
    rotateY(map(mouseX,0,width,-PI,PI)); 
    box(50); 
    popMatrix(); 
} 

方法2:您可以從您的繪圖代碼中分離出來的值/數更新,並在同一幀繪製兩次,但進入獨立的「層」,可能使用PGraphics實例

如果你想單獨窗口中,您可以看到this answer

+0

的代碼示例,我喜歡你實施了的方式,但我需要顯示他們在兩臺獨立的投影儀上。 – jubin

+0

兩臺投影機是什麼意思? (兩個不同的投影矩陣,兩個窗口,別的東西)? –

+0

其液晶投影儀或兩個獨立的顯示器。 – jubin