Не удается найти причину ошибки Open GL ES - PullRequest
0 голосов
/ 28 февраля 2019

Я использую 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 из моего второго потока?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам необходимо создать второй контекст EGL для второго потока и поместить его в ту же группу общих ресурсов, что и первый контекст, чтобы они могли совместно использовать ресурсы.Вы делаете это, предоставляя первый контекст в качестве параметра share_context при вызове eglCreateContext() для второго контекста.

Но я не могу быть уверен в этом, потому что в приведенном коде используется класс, который я могуне найти в библиотеке Open GL ES 3.1 (EGLContext2, eglCreateContext, eglCreatePbufferSurface).

Поскольку префикс функции может выдаться, для создания контекста вам нужна библиотека EGL, а небиблиотека GL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...