GLSurfaceView.queueEvent nie działa w wątku GL

Próbuję wykonać niektóre polecenia OpenGL dla mojego GLSurfaceView z mojej głównej aktywności. Ponieważ mechanizm renderujący OpenGL działa we własnym wątku, muszę go użyćqueueEvent, o ile rozumiem.

dzwonięqueueEvent z następującym kodem w moim GLSurfaceView:

queueEvent(new Runnable(){
     @Override
     public void run() {
          renderer.doSomething(data); //executes some OpenGL commands
          requestRender();
}});

ThedoSomething() metoda wiąże teksturę i kompiluje shadery.

To nie działa.glCreateProgram zwraca0, co dzieje się na przykład, gdy polecenie GL jest wykonywane poza wątkiem GL. Dokładnie ten sam kod działa dobrze, jeśli wykonam go z mojego renderera. Wydaje się więc, że polecenia, które wykonuję, używająqueueEvent nie są wykonywane w kontekście GL, ale są wykonywane w niewłaściwym wątku.

Czy rozumiem to powołanie?queueEvent wystarczy wykonać kod wewnątrz wątku GL? Czy jest jeszcze coś, co muszę zrobić, czy jakikolwiek błąd w tym, jak to teraz nazywam?

questionAnswers(1)

yourAnswerToTheQuestion