
我正在尝试从我的主要活动中为我的GLSurfaceVIEw执行一些OpenGL命令.据我所知,由于OpenGL渲染器在其自己的线程中工作,因此我必须使用queueEvent.
我在我的GLSurfaceVIEw中使用以下代码调用queueEvent:
queueEvent(new Runnable(){ @OverrIDe public voID run() { renderer.doSomething(data); //executes some OpenGL commands requestRender();}});doSomething()方法绑定纹理并编译着色器.
这是行不通的. glCreateProgram返回0,例如,在GL线程外执行GL命令时,会发生这种情况.如果从渲染器中执行相同的代码,也可以正常工作.因此,看来我使用queueEvent执行的命令不是在GL上下文中执行的,而是在错误的线程中执行的.
我的理解是,调用queueEvent足以在GL线程内执行代码是错误的吗?我还有什么要做的,还是现在我怎么称呼它的任何错误?
解决方法:
它进行了一些试验,似乎在某些情况下,虽然仍然在GL线程上,但queueEvent将在实际调用onSurfaceCreated之前执行Runnable.
如果您在Activity中的onResume之后立即使用queueEvent,则会发生这种情况.
我使用glClearcolor进行了实验,即使它毫无例外地调用了命令,背景也没有改变.也许GLContext仍然无法正确使用,并且命令什么也不做.
希望这可以帮助!
总结以上是内存溢出为你收集整理的android-GLSurfaceView.queueEvent不在GL线程中执行全部内容,希望文章能够帮你解决android-GLSurfaceView.queueEvent不在GL线程中执行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)