Я использую Open GL ES 3.1 в своем приложении и столкнулся с проблемой, которую пока не могу исправить.
Когда я пытаюсь создать 3D-объект, в зависимости от того, гдевызывается конструктор, либо объект создан правильно (и может быть успешно отображен), либо происходит сбой приложения из-за невозможности создания шейдеров (вызов glCreateShader()
возвращает 0).Это позволяет мне сказать, что мои коды шейдеров верны.
Когда я пытаюсь получить информацию об ошибке с помощью glGetError()
, я получаю GL_NO_ERROR
, даже если возвращенный шейдер равен 0!
Я также добавил setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS)
, но это не дает мне никакой подсказки.
Я предположил, что проблема может быть вызвана одновременным доступом к среде Open GL, и у меня были синхронизированы методы рисования и анимации, но это не помогло.И не помогу.
По этому вопросу Скомпилируйте шейдер GLSL асинхронно или в другом потоке на Android , я почти уверен, что проблема заключается в невозможности использования основного Open GLсреда в отдельном потоке.Но я не могу быть уверен в этом, потому что данный код использует класс, который я не могу найти в библиотеке Open GL ES 3.1 (EGLContext2
, eglCreateContext
, eglCreatePbufferSurface
).
Кто-нибудь знаеткак я могу получить доступ к среде Open GL ES из моего второго потока?