저는 안드로이드에서 Java로 openGL ES 2 게임을 만들고 있습니다.3 안드로이드 쓰레드, 구조체
현재 두 개의 스레드가 있습니다. 안드로이드 UI와 OpenGL.
내가 아는 한 최고의 성능을 얻으려면 게임 논리를위한 다른 스레드가 있어야하므로 가능한 빨리 OpenGL 스레드를 렌더링 할 수 있습니다.
이렇게하면 안드로이드 UI, OpenGL 및 Game Logic이 3이됩니다. (의는 UI, OGL 및 GL을 부르 자.) 내가 틀렸다면
이 날 수정 :
UI가 시작은 OGL 및 GL한다. OGL 및 GL이 실행되어 입력 UI를 쿼리합니다. GL은 OGL의 대기열에 그리기 호출을 보냅니다.
두 가지 경우가 있습니다. GL이 OGL보다 반복하는 데 시간이 오래 걸리면 OGL의 다음 루프는 마지막 프레임 호출의 절반 만 렌더링하는 것을 피하기 위해 GL이 끝날 때까지 기다렸다가 다음 루프를 시작해야합니다. OGL이 GL보다 오래 걸리는 경우 GL은 OGL이 완료 될 때까지 기다렸다가 다시 시작하거나 더 많은 그리기 호출을 보내야합니다.
는이를 달성하기 위해 :GL이 완료 될 때의 루프와 그것이 연신 호출 현재 큐 드로잉 끝났다 OGL 있는지 검사한다. 그렇다면 GL 및 OGL의 다음 루프를 시작합니다. 그렇지 않은 경우 기다립니다.
OGL이 완료되면 GL을 검사합니다. GL이 완료되면 두 루프가 다시 시작됩니다. 그렇지 않으면 GL을 기다리고, 완료되면 OGL을 검사하고 다시 시작합니다. 이 방법의 워크 아웃 인걸요 누워 일 :
diagram http://img840.imageshack.us/img840/2816/stackoverflowthredpictu.jpg
나에게 질문을 명확히하려면 :이 혼동 말로 조금 경우
내 생각을 illistrate하려면 ..
죄송합니다? - 그렇지 않으면 무엇이 더 좋을까요?
-What 특정 과목을 수행해야합니까? - 나는 스레드를 만드는 방법이나 스레드간에 정보를 보내는 방법을 모릅니다.
처음 질문을 묻는 질문입니다. 제대로 해 주셨으면합니다. :) 감사!
OpenGL에 익숙하지 않지만 Android의 일반적인 멀티 스레딩은'AsyncTask'를 피하고 Android' Handler'에서 표준 Java Runnable을 사용하는 것이 가장 좋습니다. –