移植到Android上,通过jni调用c++中的绘制代码,没成功。

java code:
Cocos2d-xRenderer.java
public void onDrawFrame(final GL10 gl){

Cocos2dxRenderer.nativeRender();
Cocos2dxRenderer.nativeAddLabel();

} private static native void nativeAddLabel();
/////
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeAddLabel(JNIEnv* env, jobject thiz){
HelloWorld::Instance()->addLabel();
}
//HelloWorldScene.cpp
void HelloWorld::addLabel(){
CCLog(“java call c++ success!!!”);
CCSize size=CCDirector::sharedDirector()->getWinSize();
CCLabelTTF* Testlabel=CCLabelTTF::create(“Java call C++ success!!!”, “Thonburi”, 50);
Testlabel->setColor(ccc3(0, 200, 0));
Testlabel->setPosition(ccp(size.width/2,size.height/4*3));
CCLog(“label position:------------%2.1f”,Testlabel->getPosition().x); this->addChild(Testlabel,2); }

可以成功打印出java call c++ success 但是,Android屏幕中没有TestLabel显示的内容,为什么,求大神解释啊。。。。。。。

— Begin quote from ____

一根筷子 发表于 2013-2-28 10:23 url

是在主线程里面绘制的啊,
public void onDrawFrame(final GL10 gl){

— End quote

以前做android的时候没这么调用过,一般jni过来只是设置一些变量。
所有的初始化工作全部是有cocos2d-x的逻辑来完成的,创建的是用这些变量来初始化。

线程问题吗?opengl里面的绘制只能在主线程执行。

— Begin quote from ____

skoky 发表于 2013-2-28 09:20 url

线程问题吗?opengl里面的绘制只能在主线程执行。

— End quote

是在主线程里面绘制的啊,
public void onDrawFrame(final GL10 gl){

Cocos2dxRenderer.nativeRender();
Cocos2dxRenderer.nativeAddLabel();

}

上面这个函数是在主线程里面绘制的,但是就是没能显示出来,不知道啥情况?难道再开一个线程来绘制?