[iuud8]cocos2dx项目编译到安卓报call to OpenGL ES API with no current context的错误

来源:互联网 发布:数据定义语言包括什么 编辑:程序博客网 时间:2024/06/05 17:13

话说最近真是写了好多小游戏。。。然后编译到android,然后就各种出错了。。。有一个比较头疼的问题,改了好久没改出来

具体问题如下:

c++通过jni调用android没有问题,但是当android通过jni调用c++时候,如果涉及到c++方面ui的变动,则会报下面的error

01-28 11:44:45.264: E/libEGL(23655): call to OpenGL ES API with no current context (logged once per thread)

这个问题会导致ui上图片不能正确的显示,或黑框,或直接崩溃。。。


话说真是困扰了好久,连重建项目这种事情我都干了。。。

在网上搜了资料,发现了以下解释:

OpenGL是一个其于上下文Context 环境开发的,所以每个线程需要保存自已的运行环境,如果没有的话则会报错:"call to OpenGL ES API with no current context logged once per thread"

解决方法如下:

例如我们原来调用c++的函数是这么调用的:

//声明public static native void buySuccess(String GoodsType);//调用AppActivity.buySuccess("aa");

则我们需要改为这种方式调用

//声明public static native void buySuccess(String GoodsType);//调用buySuccessJava("aa");public void buySuccessJava(final String GoodsType)  {    Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {    @Override      public void run() {        buySuccess(GoodsType);      }    });  }

保存运行,发现已经OK


0 0
原创粉丝点击