[iuud8]cocos2dx項目編譯到安卓報call to OpenGL ES API with no current context的錯誤

話說最近真是寫了好多小遊戲。。。然後編譯到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


發佈了24 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章