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?