У меня есть несколько текстур, одна из которых привязывается к TEXTURE0 перед рисованием.
В моих фрагментных шейдерах у меня есть единственная форма sampler2D, такая как:
uniform sampler2D diffuse;
Раньше я вызывал uniform1f ([uniform location], 0) каждый кадр, каждый шейдер, чтобы явно установить униформу для чтения нулевого блока текстуры, но после удаления этих вызовов мое приложение по-прежнему работает в тестируемых мной системах Linux, Windows и Mac. . Это не убедительное свидетельство того, что не устанавливать униформу безопасно, поэтому возникает вопрос: можно ли предположить, что неустановленные униформы sampler2D будут читать текстурный блок 0?
Мотивацией к удалению вызовов uniform1f было уменьшение количества вызовов отрисовки, которые особенно дороги при работе в веб-сборке, потому что есть дополнительные накладные расходы на вызов javascript.
Я не видел никаких упоминаний о значениях по умолчанию в спецификации, кроме настраиваемого пользователем значения по умолчанию, которое поддерживается только в opengl 4 (не WebGL 2). Отмечу, что после изменения в консоли ошибок не было.