GLSurfaceView.queueEvent не выполняется в потоке GL

Я пытаюсь выполнить некоторые команды OpenGL для моего GLSurfaceView из моей основной деятельности. Поскольку рендерер OpenGL работает в своем собственном потоке, я должен использоватьqueueEvent, насколько я понимаю.

я звонюqueueEvent со следующим кодом в моем GLSurfaceView:

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

doSomething() Метод связывает текстуру и компилирует шейдеры.

Это не работает.glCreateProgram возвращается0Это происходит, например, когда команда GL выполняется вне потока GL. Точно такой же код также отлично работает, если я выполняю его из моего рендерера. Таким образом, кажется, что команды, которые я выполняю, используяqueueEvent не выполняются в контексте GL, но выполняются в неправильном потоке.

Мое понимание того, что зоветqueueEvent достаточно для выполнения кода внутри потока GL неправильно? Есть ли что-то еще, что я должен сделать, или какая-либо ошибка в том, как я это называю сейчас?

Ответы на вопрос(1)

Ваш ответ на вопрос