2010-08-18 3 views
4

오픈 GL과 안드로이드 개발에 익숙하지 않으므로 제 질문이 매우 사소한 경우 용서해주십시오."현재 컨텍스트없이 OpenGL ES API를 호출하는 이유"가 왜 생깁니 까?

GLSurfaceView에 표시 될 RGB 색상의 각 구성 요소에 대해 0-100 % 값을 나타내는 세 개의 EditTexts에서 사용자 입력을받는 간단한 작은 응용 프로그램을 작성하려고합니다.

잡아 당김은 OpenGL ES 2.0을 사용하기 위해 필요한 것이고 균일 한 값을 사용하여 음영 프로그램에 데이터를 전달해야합니다. 그래서 작업을 완료하면 실제로 성취하려는 부분으로 이동할 수 있습니다 .

내가 작성한 것을 실행하면 GLSurfaceView가 첫 번째 단색을 올바르게 표시 할 수 있지만 값을 변경하고 음영 프로그램의 균일 슬롯을 다시 작성하기 위해 호출 할 때마다 LogCat에서이 오류가 발생합니다 :/libEGL (14316)이

오류 : 현재 컨텍스트와의 OpenGL ES API에 대한 호출은 GLSurfaceView는 초기 색상 남아

물론 (스레드 당 한 번만 기록).

나는이 문제에 대한 해결책을 찾기 위해 최선을 다해 왔는데 렌더러를 설정하기 전에 어딘가에 EGLContext를 설정해야한다고 말할 수 있습니다. 그러나 이것에 대한 API 데모에는 아무것도 표시되지 않으며 온라인에서 찾을 수있는 유일한 정보는 GLSurfaceView가 사용 가능하기 전에 작성되었습니다.

그래도 EGLContext를 설정해야합니까, 아니면 다른 것을 놓쳤습니까? 도움이 될 수


추가 정보 :

(코드에서 그 일을하는 것은 도움이되지 않습니다 내가 말할 수있는까지 등) UI를 설정하는 XML 파일을 사용됨 - 동일한 프로그램에서 sd 카드의 새로운 질감을로드하려고 할 때 같은 문제가 발생했습니다. 첫 번째 텍스처를 잘 작동하도록 만들 수 있지만 동일한 메소드를 사용하여 두 번째로로드 할 때 동일한 오류가 발생하고 아무 것도 변경되지 않습니다.

+0

여러 스레드를 사용하고 있습니까? –

답변

10

당신은 OpenGL 스레드에서 호출하지 않습니다. 다른 스레드가 OpenGL로 무언가를하려한다면, 큐를 대기시키고 OpenGL 스레드에서 호출하십시오.

+0

일부 코드 블록을 가리킬 수 있습니까/답변과 함께 여기에 예제를 추가 할 수 있습니까? – gonephishing