We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello. I am animating a lot of lines to an analysis of music frequencies. The lines should rotate from left to line more if its corresponding frequency has a lot of amplitude. I would like to get 60 fps, but I can only get around 15 fps.
I am drawing 14310 lines of 9 pixels length with smooth(2);
on. I have found that the mail culprit is this anti-aliasing, because if I do noSmooth();
I get around 54 fps, which is closer to what I want. But I am not yet sure if I like to non-anti-aliased lines better then the other, so I'd like to be able to do both with proper performance.
Also if I just draw 4000 lines, I get about 47 fps.
So I figure the problem is the high amount of lines combined with the anti-aliasing.
Does anyone have any advice on how to increase my fps with the same amount of smooth lines?
I am using Processing 3.1.1 on OS X 10.11.5. My simplified code is below.
// set up classes for a font and the lines
PFont font;
Line[] lines;
// setting variables
int bands = 80;
float yAmount = 48;
// initiate global variables
float xAmount = bands - 1;
int count = int(xAmount * yAmount);
void setup()
{
// set initial settings
fullScreen();
smooth(2);
stroke(255);
fill(255);
strokeWeight(1);
// initiate line objects
lines = new Line[count];
int index = 0;
for (int x = 0; x < xAmount; x++){
for (int y = 0; y < yAmount; y++){
lines[index++] = new Line(x*10 + 10, y*15 + 9);
}
}
// create font
font = createFont("Arial Bold", 32);
}
void draw()
{
background(0);
for(int z = 0; z < count; z++)
{
lines[z].display();
}
// something to show framerate
textFont(font,36);
fill(255);
text(frameRate,20,400);
}
class Line
{
int x;
int y;
Line(int xTemp, int yTemp)
{
x = xTemp;
y = yTemp;
}
void display(){
pushMatrix();
translate(x,y);
rotate(radians(2));
line(10,30,10,21);
popMatrix();
}
}
Answers
Have you tried FX2D renderer out? :-?
I haven't. Before I googled FX2D renderer I didn't know you could use different renderers. I am now using the P2D renderer with
fullScreen(P2D);
and it gives me 60fps consistently.Thank you for pointing me in the right direction!