我使用的處理,一個偉大的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每草圖。
我需要的是多窗口從一個草圖開始。 我這樣做如下:
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);
}
}
但是現在我的幀率是變得非常低:
有沒有人有什麼原因造成這個的想法。 我嘗試將線程優先級設置爲最大值,但沒有幫助。
下面是一些信息,這可能有助於: 至於其他,問,如果你需要知道的東西,我會考慮它。
每個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來工作 類似的東西,控制緩衝交換等
這將是很好,如果有人可以描述詳細說明究竟要做什麼。
這可能是由於在GPU驅動程序中啓用了「Wait for VBlank」,並且在程序中對SwapBuffers進行了一些不幸處理(可能是由內部處理本身,但我對此不太瞭解)。這可能會導致它將等待每個窗口的VBlank,將幀速率限制爲2個窗口的顯示器刷新速率的一半,並且將三個幀等待3個等等。 – derhass
感謝您的回答,我確定他們有朝一日會查看它:) – clankill3r