Windows 7 为什么这个程序在processing.exe中运行得这么慢?
为什么这个程序在processing.exe中运行得这么慢 在配备Intel graphics的3GHz Windows 7计算机上,下面的程序在processing.exe中仅显示约1fps,但在Chrome的sketchpad中显示全速Windows 7 为什么这个程序在processing.exe中运行得这么慢?,windows-7,processing,Windows 7,Processing,为什么这个程序在processing.exe中运行得这么慢 在配备Intel graphics的3GHz Windows 7计算机上,下面的程序在processing.exe中仅显示约1fps,但在Chrome的sketchpad中显示全速 int金额=30; 整数[]x=新整数[金额]; 整数[]y=新整数[金额]; int[]z=新的int[金额]; 无效设置(){ 尺寸(500、400、P3D); 背景(0); noFill(); 中风(255); 冲程重量(1); 对于(int i=0;
int金额=30;
整数[]x=新整数[金额];
整数[]y=新整数[金额];
int[]z=新的int[金额];
无效设置(){
尺寸(500、400、P3D);
背景(0);
noFill();
中风(255);
冲程重量(1);
对于(int i=0;i您的程序正在以60 fps的速度运行。您可以在调用background()
后立即添加此项来确认这一点:
文本(帧率,25,25);
这将显示每帧的当前帧速率,您将看到它不断更新
您的问题是这一行:
rotateY(sin(帧数/100)*1);
请注意,frameCount
和100
都是int
值。它们没有小数位,任何涉及它们的操作都会删除小数位。因此:
0/100=0
25/100 = 0
99/100 = 0
100/100 = 1
125/100 = 1
因此,frameCount/100
的值只会每100
帧更改一次。因此,从sin()
函数返回的值只会每100
帧更改一次。这就是为什么看起来只有1fps
您可以通过在该行之前添加一点打印语句来确认这一点:
println(“frameCount/100=“+(frameCount/100));
println(“sin:+sin(帧数/100));
解决这个问题的方法是使用一个float
值。这些值有一个小数部分,任何涉及它们的操作都有一个小数部分。要做到这一点,只需在100
中添加一个小数部分,使其成为100.0
。处理过程将知道您希望它成为float
值,现在就可以得到结果也将是浮动的
:
0/100.0=0.0
25/100.0 = 0.25
99/100.0 = 0.99
100/100.0 = 1.0
125/100.0 = 1.25
因此,您只需将该行更改为:
rotateY(sin(frameCount/100.0));
您的程序正在以60 fps的速度运行。您可以在调用background()
后立即添加此项来确认这一点:
文本(帧率,25,25);
这将显示每帧的当前帧速率,您将看到它不断更新
您的问题是这一行:
rotateY(sin(帧数/100)*1);
请注意,frameCount
和100
都是int
值。它们没有小数位,任何涉及它们的操作都会删除小数位。因此:
0/100=0
25/100 = 0
99/100 = 0
100/100 = 1
125/100 = 1
因此,frameCount/100
的值只会每100
帧更改一次。因此,从sin()
函数返回的值只会每100
帧更改一次。这就是为什么看起来只有1fps
您可以通过在该行之前添加一点打印语句来确认这一点:
println(“frameCount/100=“+(frameCount/100));
println(“sin:+sin(帧数/100));
解决这个问题的方法是使用一个float
值。这些值有一个小数部分,任何涉及它们的操作都有一个小数部分。要做到这一点,只需在100
中添加一个小数部分,使其成为100.0
。处理过程将知道您希望它成为float
值,现在就可以得到结果也将是浮动的:
0/100.0=0.0
25/100.0 = 0.25
99/100.0 = 0.99
100/100.0 = 1.0
125/100.0 = 1.25
因此,您只需将该行更改为:
rotateY(sin(frameCount/100.0));