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 неправильно? Есть ли что-то еще, что я должен сделать, или какая-либо ошибка в том, как я это называю сейчас?