static int pandora_init(int gles_version) { int i, j; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { return 0; } for (i = SDLK_0, j = AKEYCODE_0; i <= SDLK_9; i++, j++) { keymap[i] = j; } for (i = SDLK_a, j = AKEYCODE_A; i <= SDLK_z; i++, j++) { keymap[i] = j; } EGLint egl_config[] = { EGL_BUFFER_SIZE, 16, EGL_RED_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_ALPHA_SIZE, 0, EGL_DEPTH_SIZE, 24, EGL_STENCIL_SIZE, EGL_DONT_CARE, EGL_CONFIG_CAVEAT, EGL_NONE, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, gles_version == 2 ? EGL_OPENGL_ES2_BIT : EGL_OPENGL_ES_BIT, EGL_NONE }; GLES_Data* data = (GLES_Data*)malloc(sizeof(GLES_Data)); memset(data,0,sizeof(GLES_Data)); data->screen = SDL_SetVideoMode(0,0,0,SDL_FULLSCREEN); CHK_FREE_RET(data->screen==NULL,data,0); SDL_SysWMinfo sysWmInfo; SDL_VERSION(&sysWmInfo.version); SDL_GetWMInfo(&sysWmInfo); data->eglDisplay = eglGetDisplay(0); // (EGLNativeDisplayType)sysWmInfo.info.x11.display); CHK_FREE_RET(data->eglDisplay==EGL_NO_DISPLAY,data,0); CHK_FREE_RET(GLES_TestError("eglGetDisplay"),data,0); EGLBoolean r = eglInitialize(data->eglDisplay,0,0); CHK_FREE_RET(!r,data,0); CHK_FREE_RET(GLES_TestError("eglInitialize"),data,0); int iConfigs; r = eglChooseConfig(data->eglDisplay, egl_config, &data->eglConfig, 1, &iConfigs); CHK_FREE_RET(!r||iConfigs!=1,data,0); CHK_FREE_RET(GLES_TestError("eglChooseConfig"),data,0); data->eglSurface = eglCreateWindowSurface(data->eglDisplay, data->eglConfig, NULL, NULL); //(NativeWindowType)sysWmInfo.info.x11.window, NULL); CHK_FREE_RET(data->eglSurface==EGL_NO_SURFACE,data,0); CHK_FREE_RET(GLES_TestError("eglCreateWindowSurface"),data,0); EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, gles_version, EGL_NONE }; data->eglContext = eglCreateContext(data->eglDisplay,data->eglConfig,NULL,contextAttribs); CHK_FREE_RET(data->eglContext==EGL_NO_CONTEXT,data,0); CHK_FREE_RET(GLES_TestError("eglCreateContext"),data,0); eglMakeCurrent(data->eglDisplay,data->eglSurface,data->eglSurface,data->eglContext); GLES_TestError("eglMakeCurrent"); data->fbdev = open(FRAMEBUFFERDEVICE,O_RDONLY); G_Data = data; SDL_ShowCursor(0); return 1; }
int platform_init() { int version = 1; #if APKENV_GLES2 version = 2; #endif EGLint egl_config[] = { EGL_BUFFER_SIZE, 16, EGL_RED_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_ALPHA_SIZE, 0, EGL_DEPTH_SIZE, 24, EGL_STENCIL_SIZE, EGL_DONT_CARE, EGL_CONFIG_CAVEAT, EGL_NONE, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, version==1 ? EGL_OPENGL_ES_BIT : EGL_OPENGL_ES2_BIT, EGL_NONE }; GLES_Data* data = (GLES_Data*)malloc(sizeof(GLES_Data)); memset(data,0,sizeof(GLES_Data)); data->screen = SDL_SetVideoMode(0,0,0,SDL_FULLSCREEN); CHK_FREE_RET(data->screen==NULL,data,0); SDL_SysWMinfo sysWmInfo; SDL_VERSION(&sysWmInfo.version); SDL_GetWMInfo(&sysWmInfo); data->eglDisplay = eglGetDisplay((EGLNativeDisplayType)sysWmInfo.info.x11.display); CHK_FREE_RET(data->eglDisplay==EGL_NO_DISPLAY,data,0); CHK_FREE_RET(GLES_TestError("eglGetDisplay"),data,0); EGLBoolean r = eglInitialize(data->eglDisplay,0,0); CHK_FREE_RET(!r,data,0); CHK_FREE_RET(GLES_TestError("eglInitialize"),data,0); int iConfigs; r = eglChooseConfig(data->eglDisplay, egl_config, &data->eglConfig, 1, &iConfigs); CHK_FREE_RET(!r||iConfigs!=1,data,0); CHK_FREE_RET(GLES_TestError("eglChooseConfig"),data,0); data->eglSurface = eglCreateWindowSurface(data->eglDisplay, data->eglConfig, (NativeWindowType)sysWmInfo.info.x11.window, NULL); CHK_FREE_RET(data->eglSurface==EGL_NO_SURFACE,data,0); CHK_FREE_RET(GLES_TestError("eglCreateWindowSurface"),data,0); EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, version, EGL_NONE }; data->eglContext = eglCreateContext(data->eglDisplay,data->eglConfig,NULL,contextAttribs); CHK_FREE_RET(data->eglContext==EGL_NO_CONTEXT,data,0); CHK_FREE_RET(GLES_TestError("eglCreateContext"),data,0); eglMakeCurrent(data->eglDisplay,data->eglSurface,data->eglSurface,data->eglContext); GLES_TestError("eglMakeCurrent"); data->fbdev = open(FRAMEBUFFERDEVICE,O_RDONLY); G_Data = data; return 1; }