iTexCoord0, очевидно, является входным параметром. Почему не объявлена униформа?
Униформа - это не то же самое, что входные параметры. iTexCoord - это переменный вход, то есть для каждой вершины он может иметь уникальное значение. Это устанавливается с помощью команд, таких как glVertexAttribPointer. Такие вещи, как координаты вершин, нормали, текстовые координаты, цвета вершин, являются примерами того, для чего вы можете использовать различные входные данные.
Униформы, с другой стороны, предназначены быть статическими для всего вызова отрисовки или, возможно, для всего кадра или жизни программы. Они устанавливаются с помощью команд glUniform *. Униформа может быть чем-то вроде матрицы вида модели для объекта или положения солнца для расчета освещения. Они меняются не очень часто.
[править] Эти конкретные команды, я думаю, на самом деле работают с GLSL, но теория должна быть такой же для CG. Найдите специальный учебник по cg, чтобы выяснить точные команды для установки вариантов и униформы.
covMap1 - splat6 - текстуры. Эти параметры или что-то загружено в память видеокарты (например, глобальные)? Определение огров для шейдерной программы не перечисляет их в качестве параметров.
Мой CG немного ржавый, но если он такой же, как GLSL, то sampler2d является униформой, которая берет индекс, который представляет, из какого сэмплера вы хотите сэмплировать. Когда вы делаете что-то вроде glActiveTexture (GL_TEXTURE3), glBindTexture (n), тогда вы устанавливаете форму сэмплера на «3», которую вы можете сэмплировать из этой текстуры.
Значит ли порядок объявления что-либо при отправке значений из внешней программы?
Нет, переменные упоминаются во внешней программе по именам строковых переменных.
Если я не передам один из параметров, шейдер просто не будет выполнен (и мой объект будет невидимым, потому что у него нет текстуры)?
Неизвестно. Вероятно, они будут иметь «некоторое» начальное значение, хотя трудно ли предположить, имеет ли это какой-либо смысл и будет ли что-то генерироваться.
Есть ли лучший способ отладить их, чем просто ударить / пропустить и угадать?
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_appendix_b.html
Смотрите раздел B.3.8