我正在尝试从我的主要活动中为我的 GLSurfaceView 执行一些 OpenGL 命令。queueEvent
由于 OpenGL 渲染器在其自己的线程中工作,据我所知,我必须使用。
我queueEvent
在 GLSurfaceView 中使用以下代码调用:
queueEvent(new Runnable(){
@Override
public void run() {
renderer.doSomething(data); //executes some OpenGL commands
requestRender();
}});
该doSomething()
方法绑定纹理并编译着色器。
这不起作用。return ,例如,当在 GL 线程之外执行 GL 命令时会发生这种情况glCreateProgram
。0
如果我从渲染器中执行完全相同的代码,它也可以正常工作。所以看起来我执行的命令queueEvent
不是在GL上下文中执行的,而是在错误的线程中执行的。
我对调用queueEvent
足以在 GL 线程内执行代码的理解是否错误?还有什么我必须做的,或者我现在如何称呼它有什么错误吗?