2011-04-21 1 views
2

휴면 모드에서 돌아올 때 안드로이드 2.3 NativeActivity가 정상적으로 다시 시작 되려고합니다. OpenGL을 사용하는 순수한 기본 활동입니다.대기/수면에서 돌아올 때 EGL 표면을 만들 수 없습니다.

나는 절전 모드로 들어갈 때 파괴되는 것을 피하기 위해 매니페스트에 android : configChanges = "orientation"을 사용했습니다.

내가 APP_CMD_TERM_WINDOW를 받으면 GL 리소스를 언로드하고 GL을 종료합니다.

잠자기 모드에서 돌아 왔을 때 GL을 초기화하려고하면 문제가 발생합니다. APP_CMD_INIT_WINDOW를 얻고 평소와 같이 GL을 초기화하려고하면 새로운 서페이스를 만들지 못합니다.

어떤 생각 ...

eglCreateWindowSurface는 EGL_BAD_MATCH를 반환하고이 게임은 끝났어?

답변

4

native-app-glue 라이브러리를 사용하거나 사용하지 않고 NativeActivity (NVIDIA, Sony Ericsson)를 사용하는 대부분의 EGL 예제 소스 코드를 발견했습니다.

일부 장치의 경우 절전 모드에서 복귀 한 후 APP_CMD_INIT_WINDOW를받은 후 얻는 창과 초기화시 다른 창과의 차이점이 있습니다. 샘플 코드에서 보았던 대부분의 EGL 초기화는 하드 코드 된 속성 배열 (일반적으로 해당 제조업체의 대표 장치에 적합)을 사용하여 eglChooseConfig으로 호출합니다.

ANativeWindow_getFormat으로 창 형식을 확인하고 NativeWindow에 WINDOW_FORMAT_RGB_565이있는 경우에만 565 EGL 구성을 선택하고 다른 경우에는 888 구성을 사용해야합니다.

두 개의 속성 배열을 사용할 수 있습니다. 예를 들어, eglChooseConfig에서 모든 구성을 가져올 수 있습니다. eglGetConfigAttrib을 사용하여 값 (깊이, 스텐실 등)을 가져 와서 원하는 값을 정확하게 찾습니다. 지정한 깊이 크기 나 스텐실 크기가 정확하지 않을 수 있지만 더 큰 스텐실 또는 깊이 버퍼가있는 구성에서는 문제가 없습니다.

관련 문제