Загрузка данных в текстуру атласа в рабочем потоке и выборка из той же текстуры в потоке рендеринга

Есть 2 контекста OpenGLES2, которые являются одной и той же «группой общего доступа». Я знаю, что можно загрузить текстуру в рабочий поток, пока она не используется в потоке рендеринга. Но можно ли загрузить часть данных в регион на текстуре атласа из рабочего потока и выборку из той же текстуры атласа (но из другого региона, конечно)? Я читал, что рендеринг в текстуру и выборка из нее приведут к неопределенному поведению (если не использовать NV_texture_fence), но на самом деле это не мой случай.


person Alexey Pelykh    schedule 28.07.2013    source источник


Ответы (1)


Нет, это нарушает 1-е и 2-е правила из документации:

Ваше приложение несет ответственность за управление изменениями состояния объектов OpenGL ES, когда общая группа используется несколькими контекстами. Вот правила:

  1. Ваше приложение может одновременно обращаться к объекту в нескольких контекстах, при условии, что объект не изменяется.
  2. Пока объект изменяется с помощью команд, отправленных в контекст, объект не должен считываться или изменяться в любом другом контексте.
  3. После изменения объекта все контексты должны повторно связать объект, чтобы увидеть изменения. Содержимое объекта не определено, если контекст ссылается на него перед привязкой.
person bobobobo    schedule 17.08.2013