游戏引擎移植中须要JNI中异步加载纹理。IPhone中用上下文解决,请问如何在Android中解决这个问题。JNI中OPenGl ES的上下文如何使用,能不能解决异步加载纹理问题。急求解决方案,谢谢。JNI纹理 异步JNI Texture threadJNI Texture ThreadJNI Thread TextureJNI异步加载纹理
解决方案 »
- android 如何把一个矩形,变成梯形
- 求救:android 打开pc上网络共享文件夹上的文件 例如:\\192.168.10.220\vss\pengqh.xls
- 求各位大神帮帮忙。老师催的急 ,谢谢了。看看是什么问题怎么解决
- android的环境配置
- asp转化为JSON数据类,然后在Android中调用
- AndroidManifest.xml中能否实现“@string/app_name + @string/sub_name”的效果?
- 安装andorid ADT时出错
- 新人,有问题求助
- 求助大神记事本添加闹铃功能
- 可以运行android demo的软件,求开发思路
- 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要用到的时候再绑定不就行了?