2013-08-11 3 views
0

three.js renderer.domelement.todataurl을 사용하여 현재보기의 이미지를 가져옵니다. 그것은 잘 작동합니다. 문제는 제 프로젝트가 높은 0.1 초마다 이미지를 캡처해야한다는 것입니다. 거의 동결 탐색 할이 자주 아래 three.js 어떻게 renderer.domelement.todataurl의 속도를 높일 수 있습니까?

는, 사용자는 아무것도 할 수 없습니다. 함수 todataurl()이 대부분의 CPU 시간을 차지합니다.

모든 의견을 환영합니다.

내 생각은 : 1) 이미지를 캡처하는 다른 방법을 찾으십시오. todataurl()을 피하십시오? 2) 웹 작업자에 렌더러를 넣으시겠습니까?

감사합니다.

답변

1

우선, 빠른 픽셀을 읽지 않는 것이 좋습니다. 일반적인 데스크톱 응용 프로그램에서는 권장되지 않습니다.

그래야한다면 gl.readpixels을 사용하는 것이 좋습니다. 그것은 자바 스크립트에서 픽셀을 읽는 가장 빠른 방법이어야합니다. 또한 폭과 높이를 줄이면 더 빨리 읽을 수 있습니다.

사용하는 방법 :

var pixels = new Uint8Array(width * height * 4); 
renderer.gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); 

당신은 다음과 이상을 실행하는 작업자의 픽셀 배열을 사용할 수 있습니다. 또는 나중에 픽셀의 변형을 지연하십시오.

============================================== ====

언제든지 canvasrenderer를 사용하고 있다면 context.getImagedata를 사용해야합니다.

+0

https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/readPixels 또한 gl.RGB를 사용하여 복사 한 총 데이터를 줄일 수 있습니다. –

관련 문제