EDIT: мне удалось решить проблему, переустановив PyOpenGL с помощью pip. Эта же программа теперь работает как положено. Спасибо за ваши усилия.
Вопрос полностью переписан и уточнен.
Проблема заключается не в (хотя и странных) подходах к созданию и связыванию текстур, как объясняется в комментариях.
Моя реальная проблема заключается в том, что юниформ-переменные в шейдерах не обновляют свои значения при изменении (да, изменении вне шейдера) между вызовами glDrawArrays(). Я проверил это, используя разные типы униформ, разные значения и проверяя их значения путем рендеринга в текстуру.
Похоже, что значения униформы блокируются, как только вызывается glDrawArrays(). После этого я могу изменить их снова только после очистки буфера цвета.
Я готов вознаградить за любое работающее решение. Публикация любого исходного кода, на мой взгляд, бесполезна, так как проблема, похоже, НЕ в коде.
Любые предложения приветствуются.