egl: что является общим при использовании общего контекста - PullRequest
0 голосов
/ 14 октября 2019

В EGL есть shared context.

, когда контекст (созданный первым потоком) используется совместно (для второго потока), какие ресурсы доступны для второго потока?

Это текстуры, буферы, буферы кадров, буферы рендеринга или другие объекты?

Второй вопрос:

Если первый поток создал текстуры (обрабатывает 2) и его контекст используется совместно свторая нитьВо втором потоке, когда я вызываю glGenTextures. это даст тексту, чей дескриптор также равен 2 (в этом случае это будет конфликтовать с текстурой в общем контексте).

1 Ответ

1 голос
/ 14 октября 2019

Как правило, общие ресурсы данных используются совместно:

  • Текстуры
  • Буферы
  • Визуализаторы
  • Шейдеры / шейдерные программы

Ресурсы чистого состояния являются контекстными локальными:

  • Настройки контекста являются локальными контекстными
  • Объекты кадрового буфера (обычно этот объект застает людей врасплох)

Некоторые моменты, на которые следует обратить внимание:

  • Приложение должно вручную обеспечить синхронизацию между потоками. Если один поток модифицирует некоторые данные текстуры, а другой поток использует их при рисовании, вы можете получить точное чтение данных текстуры, пока они все еще обновляются.
  • Состояние, связанное с объектом ресурса данных (например, состояние сэмплера текстуры), слабо разделяется между контекстами;параметры состояния, которые изменяются в контексте B, выбираются (повторно) только тогда, когда ресурс связан в контексте A. параметры состояния в контексте A будут продолжать отражать старые значения, полученные в контексте A, когда ресурс был связан;последующие изменения, сделанные в контексте B, будут видны только в контексте A, когда (Контекст) привязки измененного ресурса происходит в контексте A.

Если первый поток создал текстуры (обрабатывает 2) и его контекст передается во второй поток. Во втором потоке, когда я вызываю glGenTextures. даст ли текстура, чей дескриптор также равен 2 (в этом случае это будет конфликтовать с текстурой в общем контексте).

Нет, идентификаторы должны быть уникальными в пределах группы общего доступа, иначене работает.

...