Могу ли я создать glFenceSync
в одном потоке и ждать его в другом потоке?
Каждая функция GL, которую вы можете вызвать, требует, чтобы вы сделали текущий контекст GL для поток, который вы вызываете, и контекст GL может быть текущим не более чем одному потоку в любой момент времени.
Технически, ответ на ваш вопрос все еще "да", так как вы можете выдать glFenceSync
в одном потоке, перенесите контекст в другой поток и назовите там gl[Client]WaitSync
- но это, вероятно, не то, что вы имели в виду, и я также не вижу очевидного варианта использования такого шаблона.
Могу ли я создать glFenceSync
в одном контексте и ждать его в другом контексте?
Syn c объекты совместно используются в GL, поэтому если вы создадите контексты, которые совместно используют объекты, они также будут совместно использовать объекты syn c, а spe c явно позволяет ожидать объекты syn c другого контекста. На самом деле, даже указано, что может быть несколько одновременных ожиданий на одном объекте syn c, и все они будут разблокированы, когда объект syn c получит сигнал (но в зависимости от реализации).