游戏引擎移植中须要JNI中异步加载纹理。IPhone中用上下文解决,请问如何在Android中解决这个问题。JNI中OPenGl ES的上下文如何使用,能不能解决异步加载纹理问题。急求解决方案,谢谢。JNI纹理 异步JNI Texture threadJNI Texture ThreadJNI Thread TextureJNI异步加载纹理
解决方案 »
- 怎样修改android.widget.ImageButton?????
- android中我想在第三方软件中设置音效,我想选择系统自带的,怎么弄?
- 如何像android源码一样分段加载应用程序列表?
- android 中哪个接口可以实现睡眠与唤醒
- android开发时遇到的错误
- android 如何获取手机信号详细值
- 关于Tabhost中子activity无法回调onActivityResult()方法
- 新手求助~~TABHOST的问题~
- 求高手帮分析这个android应用怎么做?
- 怎么使用ocr技术
- android中关于camera开发的一些问题
- 【资料】android新手入门资料无私奉献(无需积分下载)
bool getEGLConfig(EGLConfig **configs_list){ EGLint num_configs;
EGLDisplay m_eglDisplay; m_eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
if( m_eglDisplay == EGL_NO_DISPLAY || eglGetError() != EGL_SUCCESS )
return false;
if( eglInitialize( m_eglDisplay, NULL, NULL ) == EGL_FALSE || eglGetError() != EGL_SUCCESS )
return false;
if ( eglGetConfigs( m_eglDisplay, NULL, 0, &num_configs) == EGL_FALSE || eglGetError() != EGL_SUCCESS )
return false; *configs_list = (EGLConfig *)malloc(num_configs * sizeof(EGLConfig)); if (*configs_list == 0)
return false;
if( eglGetConfigs( m_eglDisplay, *configs_list, num_configs, &num_configs) == EGL_FALSE || eglGetError() != EGL_SUCCESS )
return false; return true;}
void *db_pthread(void *pThreadArg) {
pthread_detach (pthread_self()); EGLContext context;
EGLDisplay display;
EGLSurface draw_surface;
EGLSurface read_surface; context = eglGetCurrentContext();
draw_surface = eglGetCurrentSurface(EGL_DRAW);
read_surface = eglGetCurrentSurface(EGL_READ);
display = eglGetDisplay(EGL_DEFAULT_DISPLAY); const EGLint CONFIG_ATTRIBS[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_NONE
};
EGLConfig *configs = 0;
if(getEGLConfig(&configs)){
LOGI("configs[0]:%x",configs);
LOGI("config right");
}else{
LOGI("config error");
} EGLContext context = eglCreateContext(display, *configs, NULL, NULL);
EGLContext context2 = eglCreateContext(display, *configs, *context, NULL);
if(context2 == EGL_FALSE){
LOGI("context2 == false");
}else{
LOGI("context2 == true");
} if(eglMakeCurrent(display,draw_surface,read_surface,context2) == EGL_FALSE)
LOGI("eglMakeCurrent error");
else
LOGI("eglMakeCurrent right"); if( g_fnLoad )
(*g_fnLoad)(pThreadArg); pthread_exit((void *)0);
}
如果你是说把png decode到内存来,那就另开线程直接读取png的二进制然后decode,再放到cache中。opengl要用到的时候再绑定不就行了?