У нас есть несколько различных шейдеров opengles2.0, каждый из которых использует разные формы. Мы используем glGetUniformLocation, чтобы получить позицию для записи данных для каждой униформы. Однако это означает, что при переключении программ шейдеров, а иногда, например, мы пишем операторскую матрицу в одно место, иногда в другое, все в зависимости от того, какие формы определены для этого шейдера. Это означает, что мы не можем легко сократить избыточные равномерные заказы шейдеров, проверив, изменилось ли значение для загрузки, так как нам может потребоваться перезагрузить его, чтобы перезаписать значение, написанное другим шейдером для другой формы.glGetUniformLocation, возвращающее то же значение для всех программ
В то время как я знаю, что можно было бы включить ту же форму в каждой программе шейдеров, независимо от того, используются они или нет, будет ли glGetUniformLocation возвращать ту же позицию назад для каждой программы? Или, например, может ли шейдер-компилятор удалить неописанную униформу и собрать все остальное, заставляя каждый шейдер иметь свою униформу в разных местах. Это для IOS и Android.
Благодаря
Shaun
OK, поэтому если одна программа вернет местоположение «10» из glGetUnifiormLocation для чего-то, и я напишу там значение float «99», то я переключусь на другую программу, которая вернула местоположение «10» для чего-то еще, и я пишу «88» в это место, используя вторую программу, тогда «99» все равно будет установлен для исходной программы, если я вернусь? т. е. являются ли они уникальными местоположениями или являются общими? – user3162134
Да, 99 будет по-прежнему для вашей первой программы, когда вы переключаетесь назад. – Columbo