2014-04-08 26 views
1

我使用的處理,一個偉大的Java方言與圖形工作放緩。 如果我讓多個草圖(看到該項目的多重副本能夠在同一時間運行它們)用下面的代碼並運行它:OpenGL中對利用3幀

void setup() { 
    size(600, 400, OPENGL); 
    smooth(); 
} 

void draw() { 
    background(0, 255, 0); 

    pushMatrix(); 
    translate(width/2, height/2); 
    rotateX(radians(45)); 
    rotateY(radians(45)); 
    rotateZ(radians(45)); 

    box(100); 

    popMatrix(); 

    fill(255, 0, 0); 
    text(frameRate, 20, 40); 
} 

然後我的幀率保持近60每草圖。 multiple sketches, framerate stays high

我需要的是多窗口從一個草圖開始。 我這樣做如下:

import processing.core.*; 

public class MyProcessingSketch extends PApplet { 



    public static void main(String args[]) { 

     PApplet.main(new String[] { "MyProcessingSketch", "0" }); 
     PApplet.main(new String[] { "MyProcessingSketch", "1" }); 
     PApplet.main(new String[] { "MyProcessingSketch", "2" }); 
    } 


    public void setup() { 

     size(800,600, OPENGL); 
    } 

    public void draw() { 
     background(0, 255, 0); 

     pushMatrix(); 
     translate(width/2, height/2); 
     rotateX(radians(45)); 
     rotateY(radians(45)); 
     rotateZ(radians(45)); 

     box(100); 

     popMatrix(); 

     fill(255, 0, 0); 
     text(frameRate, 20, 40); 
    } 
} 

但是現在我的幀率是變得非常低: sloooow

有沒有人有什麼原因造成這個的想法。 我嘗試將線程優先級設置爲最大值,但沒有幫助。

下面是一些信息,這可能有助於: 至於其他,問,如果你需要知道的東西,我會考慮它。

每個PApplet.main()實例化一個新PApplet並將其存儲在本地變量的小程序: https://github.com/processing/processing/blob/master/core/src/processing/core/PApplet.java#L10628

還實例化一個新的JFrame @#L10614:

Frame frame = new JFrame(displayDevice.getDefaultConfiguration()); 

而且將其分配給字段框@#L10684 - > applet.frame = frame;

方法Init()被調用@#L10757 - > applet.init();

在它的結束@#L965,創建一個新的線程&開始:

thread = new Thread(this, "Animation Thread"); 
thread.start(); 

從這一刻起,它是一個活的&自我維持PApplet對象。


編輯:

我奔弗萊,2個創始人加工之一的答案。

這不是一個錯誤......它超出了我們支持 處理的範圍。多線程,多窗口OpenGL是一個非常複雜的 的事業,您應該直接使用OpenGL來工作 類似的東西,控制緩衝交換等

這將是很好,如果有人可以描述詳細說明究竟要做什麼。

+0

這可能是由於在GPU驅動程序中啓用了「Wait for VBlank」,並且在程序中對SwapBuffers進行了一些不幸處理(可能是由內部處理本身,但我對此不太瞭解)。這可能會導致它將等待每個窗口的VBlank,將幀速率限制爲2個窗口的顯示器刷新速率的一半,並且將三個幀等待3個等等。 – derhass

+0

感謝您的回答,我確定他們有朝一日會查看它:) – clankill3r

回答