Передайте 1 float из массива в вершинный шейдер для каждой вершины - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно нарисовать сферу (мне это уже удалось), используя ее параметрическую формулу.

Мне также нужно сгенерировать массив с таким количеством значений, сколько есть вершин (мне тоже удалось это сделать). Значения должны быть в диапазоне от 0,95 до 1,05.

Я должен передать этот массив вершинному шейдеру как униформу и умножить каждую вершину сферы на соответствующее значение из массива (это должно создать сферу, похожую на Землю).

Проблема в том, что я не могу передать массив как униформу, и даже если бы я мог, я не понимаю, как я мог бы выбрать соответствующее значение из массива, с которым мне нужно умножить его.

in vec3 pos;
in vec3 col;
uniform float arr[];

out vec3 out_col;

uniform mat4 mtr;

void main()
{
    gl_Position = mtr * vec4(pos, 1) * vec4(arr[someIndex], 1);
    out_col = col;
}

arr [] - массив, содержащий значения для каждой вершины. pos - текущая вершина, а col - текущий цвет. Каким должен быть someIndex и как я могу передать массив как равномерный?

...