Поделиться текстурами OpenGL между двумя потоками рендеринга?

У меня есть интерфейс рендеринга в GLSurfaceView, но в какой-то момент я запускаю другой поток рендеринга, чтобы иметь возможность визуализировать часть интерфейса (просто пару текстур) в гораздо большем масштабе, а затем записать их как файл изображения на SD-карту. Интересно, а можно ли использовать большие текстуры, которые я уже загружал в поток рендеринга GUI, когда я запускаю другой рендерер с целью записи на диск?

В настоящее время у меня очень плохой обходной путь, то есть я сохраняю bmp в памяти после загрузки текстуры, а затем, когда запускаю средство записи на диск, я просто создаю новую текстуру из этого растрового изображения. Но, очевидно, это отнимает много времени и памяти, когда я чувствую, что это действительно не нужно, поскольку растровое изображение уже где-то в GPU загружено в виде большой текстуры.

1 ответ

Вы можете использовать общие контексты. Когда вы создаете контекст для второго потока, передайте первый контекст в качестве параметра shared_context. Затем вы можете получить доступ к текстурам во втором потоке, используя те же маркеры, что и в исходном потоке.

Другие вопросы по тегам