2013-05-06 3 views
1

나의 이해는 그래서, eglSwapBuffers마다 자동 레임 GLSurfaceview를 사용하여 호출된다는 것이다 : Android eglSwapBuffers - 수동 제어? (안드로이드)

onDrawFrame() 
{ 

//Your drawing code here 

//system swaps buffers automatically 

} 

내가 수동/eglSwapBuffers에게 자신이 동작을 사용하지 않고 호출 할 수 있습니다 것을 전혀 방법이 필요에 따라 각 onDrawFrame()의 끝을 억제하거나 (즉, 필요할 때 실행할 수 있지만 필요할 때 실행을 멈추게하십시오). 이 경우 사람이 사용하여 두 RENDERMODE_CONTINUOUSLY &가 RENDERMODE_WHEN_DIRTY

물론

, 나의 이해는 잘못 될 수있는 경우이가 (가능한 경우)을 달성 할 수있는 방법을 설명 할 수있는 경우

가능하면, 내가 감사 할 것이다, 그래서 저를 수정하시기 바랍니다 :-)

답변

2

GLSurfaceView은 특별히 유연하지 않습니다. 이 "do draw"부울을 반환하면 좋을 것입니다. 그러면 게임 루프를 정렬하는 방법에 유연성이 조금 더 필요합니다. GLSurfaceView은 그렇게 작동하지 않으므로 옵션이 제한됩니다.

당신은 당신이 모든 프레임 렌더링 피하려면 두 가지 기본 방법이 있습니다

(1) RENDERMODE_WHEN_DIRTY 사용을, 단지 당신이 할 때 이 완료 버퍼를 교환하기를 원할 것입니다 알고 렌더링 요청합니다. 이것은 게임 로직이 렌더 스레드에서 실행되지 않고 60fps로 실행하려고하지 않는다면 어쨌든하고 싶은 작업입니다.

(2) GLSurfaceView의 소스를 다운로드하여 응용 프로그램에 병합하고 원하는대로 수정하십시오.

+0

고마워요. @fadden GLSurfaceView를 수정한다는 아이디어가 마음에 들지만, 지금은 RENDERMODE_CONTINUOUSLY로 가고 있습니다. 앞으로의 모습일지도 모릅니다. 건배. – Zippy

+1

또한 살펴볼 가치가 있습니다. https://source.android.com/devices/graphics/architecture.html#loops – fadden

+0

Android 게임 루프의 '공식'기사 인 흥미롭지 만 이전에는 본 적이 없지만, 좋은 발견! – Zippy

관련 문제