У меня неопределенное количество контекстов отображения, и каждый будет отображать текстуру. Когда я вызываю glGenTextures, я получаю одно и то же имя, возвращаемое во всех контекстах отображения. Это сработает? Даже если у них одно и то же имя, будут ли они по-прежнему хранить и отображать разные текстуры? Если нет, что делать, чтобы обойти это?





Текстуры (по умолчанию) не являются общими для разных контекстов - вы должны явно включить это, но то, как вы это делаете, зависит от платформы.
В win32 это wglShareLists, а на большинстве других платформ он указывается при создании контекста (например, с параметром share для aglCreateContext в OS-X).
Насколько мне известно, я не включил обмен текстурой. однако одна и та же текстура отображается во всех контекстах отображения.
У меня точно такая же проблема. Я использую PyQt5. Платформа: linux (ubuntu16), графика Intel.
Получение того же имени от glGenTexture и отображение одной и той же текстуры - это не одно и то же.
Имена текстур - это просто целые числа по усмотрению контекста, обычно начинающиеся с 1 и увеличивающиеся с каждым glGenTexture, но не обязательно так. Для такой работы реализация не требуется (хотя в большинстве случаев это так). Однако теоретически вы также можете получить любое более или менее «случайное» число, например целое число, которое увеличивается для любого типа объекта (т.е. не только текстуры, но также буферы и шейдеры), или даже 32-битный адрес указателя в адресное пространство драйвера или какая-то другая экзотическая штука. Не требуется, чтобы имя было чем-то конкретным.
В устаревшем OpenGL вы могли даже придумать свои собственные имена вместо использования glGenTexture, но сейчас это больше не разрешено. Не знаю, что они думали, когда это было разрешено, но в любом случае ... :)
Один и тот же номер (имя) в другом контексте обычно будет другой текстурой или, возможно, вообще без текстуры. Итак, если вы видите одну и ту же текстуру в другом контексте с тем же именем текстуры, то либо у вас есть общие контексты, либо в драйвере есть ошибки.
Обратите внимание, что если вы используете wglCreateContextAttribsARB, второй параметр - это дескриптор уже существующего контекста (или null). Если вы укажете здесь дескриптор контекста, у вас будут общие контексты, даже если без явно вызывает glShareLists. Может, это случилось случайно.
Как вы создаете графический контекст? Какая у вас платформа?