2013-07-25 4 views
0

바로 지금 processing.js 스크립트의 자체 인스턴스로 20 개의 캔버스를 렌더링하는 html 페이지가 있습니다. CPU 사용량을 줄이기 위해 mouseover/out 이벤트를 loop()/noLoop() 그래프 위에 마우스를 가져 가면됩니다.Processing.js : cpu 사용을 줄이기 위해 캔버스 부분 만 그리는 방법

하지만이 문제를 더욱 해결해야합니다. 현재 캔버스는 300x300 공간에 300x300 공간이 있습니다. 동적으로 모든 시간을 그려야하지만 실제로는 프레임의 framerate()를 사용하여 다시 그릴 필요가없는 나머지 공간 인 범례가있는 사각형이 있습니다. 휴식.

픽셀을 다시 그릴 draw() 함수를 본질적으로 지정하는 방법을 아는 사람이 있습니까?

답변

2

100x300 빈 영역이 계산에 크게 추가되지는 않을 것이라고 확신합니다. 하지만 당신은 물론 같은 것을 그릴 전달할 수 있습니다

if(frameCount==1) [draw legend code];

또는 연속하지만 덜 자주 렌더링 if(frameCount % 30 == 0)...를 사용하여.


편집 :

void setup(){ 
    size(400,400); 
    noStroke(); 
    background(255); 
} 

void draw(){ 
    fill(255,255,255,50); 
    rect(0, 150, width, height-150); 

    if(frameCount%50 == 1) { 
    fill(255); 
    rect(0, 0, width, 150); 
    fill(0); 
    text("frame " + frameCount, width/2, 75); 
    } 
    fill(255,0,0); 
    ellipse(random(0, width), random(150, height), 10, 10); 
} 
+0

그것은 빈 영역이 아니다. 이것은 초당 1 회 업데이트되는 범례입니다. 나는 업데이트를 위해서만 그리기를 원했지만 framerate()를 낮추면 전체 캔버스가 느려지 게됩니다. 하나의 캔버스 안에 다른 프레임 속도를 지정하는 방법을 찾고있었습니다. – ZekeDroid

+0

귀하의 대답은 위의 대체 방법입니다. – geotheory

+0

죄송합니다. 나는 frameCount가 1 인 경우에만이 전설을 그리는 말한다면 그때는 거기에서 밖으로에 다음 두 번째의 일부분에 대한 번을 그리고 있습니다, 참조, 빈 공간이의 나머지를 위해 그 자리에 나타납니다 재생. 다른 옵션을 사용하면 30 프레임마다 깜박입니다. 내가 원하는 것은 예를 들어, 지정한 픽셀을 기반으로 그리기 기능을 정지 시키도록 그리기 기능을 수정하는 것입니다. 그렇게하면 나는 당신이 말한 것을 할 수 있고 여전히 정적 전설이 사라지지 않게 할 수 있습니다. – ZekeDroid

관련 문제