Лучшая ставка в том, что нет реального ответа на этот вопрос. Вероятно, это зависит от некоторых внутренних ограничений драйвера, аппаратного обеспечения даже ОС. Вы можете попробовать проверить количество доступных текстурных блоков, используя glGet(GL_MAX_TEXTURE_UNITS)
, но это может или не может быть индикативным.
Распространенным решением, позволяющим избежать этого, является создание нескольких окон просмотра в одном контексте, а не нескольких контекстов в одном окне. Не должно быть слишком сложно объединить два контекста, которые разделяют окно, в один контекст с двумя областями просмотра и каким-то виджетом пользовательского интерфейса, который будет служить в качестве разделителя. Несколько окон - это отдельная история, и вы можете подумать о том, чтобы полностью переосмыслить свой дизайн пользовательского интерфейса, если есть реальная потребность в 26 отдельных окнах OpenGL.
Сейчас мне трудно думать о реальном сценарии использования пользовательского интерфейса, который фактически потребовал бы 26 различных окон OpenGL, работающих одновременно. может быть, другой вариант - создать пул, скажем, 5-10 контекстов и повторно использовать их только в окнах (вкладках?), которые в данный момент видны пользователю. Я не пробовал, но должна быть возможность создать контекст внутри обычного окна, которое больше ничего не содержит, а затем переместить это окно из родительского окна в родительское окно в любое окно верхнего уровня, в котором оно необходимо.
РЕДАКТИРОВАТЬ -
Ну, на самом деле об этом не так уж и сложно думать. В последнем Chrome (9.x.x), поддерживающем WebGL, может потребоваться открыть множество вкладок, каждая из которых имеет контекст WebGL ... Интересно, справляются ли они с этим каким-либо образом. Только что попробовал и исчерпал память после 13 вкладок ... Это на самом деле было бы хорошей проверкой и для вас, чтобы увидеть, если вы что-то делаете неправильно, или Chrome и Firefox (4.0.x-бета) имеют то же самое проблема