Контексты SDL2 не разделяют объекты (Android портирование) - PullRequest
0 голосов
/ 12 июля 2020
• 1000 для игрового процесса. Функция подкачки контекста:
static int load_gl_in_background(void *foo) {
    SDL_GL_MakeCurrent(window, gl_context_sub);
    // here foo is calling - loading textures
    SDL_GL_MakeCurrent(window, gl_context);
    return 0;
}

SDL_Thread *thread =
    SDL_CreateThread(load_gl_in_background, "SDL thread", (void *)foo);

Да, это хорошо работает на рабочем столе с контекстом es, но когда я начинаю переносить свою игру на Android, у меня возникает проблема с совместным использованием объектов. Текстуры, загруженные 2-м контекстом, после создания текущего контекста отсутствуют. Уверен, l oop работает, все в порядке (звуки, рендеринг незагруженных текстур ...). Android debug сообщает только E / libEGL: eglMakeCurrentImpl: 1321 error 3002 (EGL_BAD_ACCESS). Я действительно думаю, что проблема в том, что я должен использовать специальный SurfaceView для каждого контекста, но я надеюсь, что это можно решить с помощью флагов, атрибутов в коде C ++. Для портирования я использовал SDL, мне нужны идеи. Спасибо!

1 Ответ

2 голосов
/ 12 июля 2020

Вызов SDL_GL_SetAttribute() до SDL_CreateWindow(), а не после:

SDL_GL_SetAttribute():

Эта функция устанавливает атрибут Attr OpenGL в значение. Запрошенные атрибуты должны быть установлены перед созданием окна OpenGL . Вы должны использовать SDL_GL_GetAttribute () для проверки значений после создания контекста OpenGL, поскольку полученные значения могут отличаться от запрошенных.

...