Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.240.21] |
|
Сообщ.
#1
,
|
|
|
Привет коллеги,
делаю игру под Android 2.3.3, NKD platform-10. На эмуляторе все отрабатывает отлично, на планшете (Android 3.2.1) получаю E/libEGL(1551): eglSwapBuffers:1641 error 300d (EGL_BAD_SURFACE) девайс без рутового доступа. Юзаю OpenGL 1.1. Help p.s. по ходу наверное ошибся веткой |
Сообщ.
#2
,
|
|
|
I got past the ‘eglSwapBuffers:1380 error 300d (EGL_BAD_SURFACE)’ error by changing the following declaration (note all the sizes are don’t cares – not sure what exactly to use on my Samsung Galaxy S):
int[] configSpec = { EGL10.EGL_RED_SIZE, EGL10.EGL_DONT_CARE, EGL10.EGL_GREEN_SIZE, EGL10.EGL_DONT_CARE, EGL10.EGL_BLUE_SIZE, EGL10.EGL_DONT_CARE, EGL10.EGL_DEPTH_SIZE, EGL10.EGL_DONT_CARE, EGL10.EGL_NONE }; <uses-permission android:name="android.permission.BIND_WALLPAPER"/> FULL DISCLOSURE: I accidentally cut-and-pasted a uses-permission block with “android.permission.INTERNET” the first time, and that actually fixed the problem too. I suspect it’s a bug in somebody’s security manager; probably Samsung’s. But I re-tested with BIND_WALLPAPER, which is more logical, and it works as expected. :-) не помогло status GraphicsService::start() { EGLint lFormat, lNumConfigs, lErrorResult; EGLConfig lConfig; const EGLint lAttributes[] = { EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT, EGL_BLUE_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_RED_SIZE, 5, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_NONE }; // const EGLint lAttributes[] configSpec = { // EGL_RED_SIZE, EGL_DONT_CARE, // EGL_GREEN_SIZE, EGL_DONT_CARE, // EGL_BLUE_SIZE, EGL_DONT_CARE, // EGL_DEPTH_SIZE, EGL_DONT_CARE, // EGL_NONE // }; mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); if (mDisplay == EGL_NO_DISPLAY) goto ERROR; if (!eglInitialize(mDisplay, NULL, NULL)) goto ERROR; if(!eglChooseConfig(mDisplay, lAttributes, &lConfig, 1, &lNumConfigs) || (lNumConfigs <= 0)) goto ERROR; if (!eglGetConfigAttrib(mDisplay, lConfig, EGL_NATIVE_VISUAL_ID, &lFormat)) goto ERROR; ANativeWindow_setBuffersGeometry(mApplication->window, 0, 0, lFormat); mSurface = eglCreateWindowSurface(mDisplay, lConfig, mApplication->window, NULL); if (mSurface == EGL_NO_SURFACE) goto ERROR; mContext = eglCreateContext(mDisplay, lConfig, EGL_NO_CONTEXT, NULL); if (mContext == EGL_NO_CONTEXT) goto ERROR; if (!eglMakeCurrent (mDisplay, mSurface, mSurface, mContext) || !eglQuerySurface(mDisplay, mSurface, EGL_WIDTH, &mWidth) || !eglQuerySurface(mDisplay, mSurface, EGL_HEIGHT, &mHeight) || (mWidth <= 0) || (mHeight <= 0)) goto ERROR; glViewport(0, 0, mWidth, mHeight); return STATUS_OK; ERROR: Log::error("Error while starting GraphicsService"); stop(); return STATUS_KO; } status GraphicsService::update() { float lTimeStep = mTimeService->elapsed(); static float lClearColor = 0.0f; lClearColor += lTimeStep * 0.01f; glClearColor(lClearColor, lClearColor, lClearColor, 1.0f); glClear(GL_COLOR_BUFFER_BIT); if (eglSwapBuffers(mDisplay, mSurface) != EGL_TRUE) // Падает тут :( { Log::error("Error %d swapping buffers.", eglGetError()); return STATUS_KO; } return STATUS_OK; } Добавлено help |
Сообщ.
#3
,
|
|
|
По коду - лучше избегать использования goto. Можно сделать, например, так:
do { result = do_something(); if (result == ERROR) break; return OK; } while (false); //обработка ошибки Добавлено Кстати, eglCreateWindowSurface может возвращать много ошибок, вроде. Может возникает какая-то из них? |
Сообщ.
#4
,
|
|
|
Цитата Хрен @ По коду - лучше избегать использования goto. Можно сделать, например, так: do { result = do_something(); if (result == ERROR) break; return OK; } while (false); //обработка ошибки Добавлено Кстати, eglCreateWindowSurface может возвращать много ошибок, вроде. Может возникает какая-то из них? Спасибо, как вариант заюзаю в проектах. Иногда просто применяю goto с setjmp. Получается, что вся инициализация происходит в status GraphicsService::start() без ошибок. Падает при обновлении. Есть идея посмотреть в движках типа Cocos2D, реализацию работы с графикой. |