Конфликт с рендерингом OpenGL ES и многопоточностью Windows - PullRequest
0 голосов
/ 25 марта 2019

Я хочу выполнить работу по подготовке моего VBO в отдельных потоках, обычно 5 или 7. Я не делаю никаких вызовов OpenGL ES в этих потоках, просто получаю данные в свой буфер вершин на стороне процессора, который я использую для записи данных SubBuffer в GPUсторона VBO как только все данные готовы.Я еще не пытался реализовать это, потому что простой вызов _beginthreadex () доброкачественными способами вызывает проблемы с рендерингом.

Работая над этим проектом в Visual Studio, я использую _beginthreadex () для создания этих потоков, / MT установлен, и я попытался вызвать его из множества мест с аргументами и без аргументов, и попытался протестировать его с блокировкой потока до завершения (просто для тестирования с простыми функциями, которые не требуют времени), но это вызывает какое-токонфликта со стороной OpenGL моего кода.

Рендеринг выглядит так, как будто он имеет частоту кадров 1 секунду, но моя фактическая частота кадров остается на уровне 2-3 мс, у меня отображаются таймеры.

Естьчто-то портит контекст, если я открываю поток в середине программы?Я не могу понять, почему это происходит, и хотел бы получить какой-либо вклад.Я использую PowerVR библиотеки OpenGL ES, есть ли у этих библиотек эмулятор проблемы с многопоточностью Windows?Я также работаю над этим проектом в Android Studio, проверил pthreads, и никаких видимых проблем с рендерингом не было.

...