glUniform1fv записывает в UniformLocation только первое значение? - PullRequest
0 голосов
/ 08 мая 2020

Я проверял, действительно ли glUniform1fv копирует все значения в UniformLocation, поскольку мой окончательный результат был не таким, как ожидалось, и я заметил, что копировалось только первое значение, когда я получал значения с помощью glGetUniformfv. Метод копирования значений был получен из этого ответа SO .

Код:

Код FragmentShader: для целей отладки я использую только Uniform float Aarr.

precision highp float;
uniform float Aarr[1000];
uniform float Barr[1000];
void main() {

    int my_index = int(gl_FragCoord[0]);
    float result = Aarr[my_index] + Barr[my_index];
    gl_FragColor = vec4(Aarr[my_index],0,0,1);
}

Установка и чтение Uniform Value: prog_array [0] содержит значение glCreateProrgam

A = np.random.uniform(0,1,[1000])
A = A.astype(np.single)
n = 1000
vec_A = glGetUniformLocation(prog_array[0], 'Aarr')
vec_B = glGetUniformLocation(prog_array[0], 'Barr')

glUniform1fv(vec_A, n, A)
glUniform1fv(vec_B, n, B) #B was created same way as A elsewhere

test_val = np.empty(1000, np.single)
glGetUniformfv(prog_array[0], vec_A, test_val)
print("A ", A[:20])
print("Test ", test_val[:20])

Вывод: совпадают только первые значения

A  [0.75577396 0.58859587 0.06011201 0.8692806  0.37496442 0.13160175
 0.04769203 0.37221003 0.9820622  0.22139452 0.2419593  0.0775761
 0.54191273 0.31821933 0.93001217 0.8580101  0.5001719  0.57158923
 0.44154036 0.8569853 ]
Test [ 7.5577396e-01 -5.5181044e-06  4.9826586e-39  4.9826586e-39
 -1.7268412e-26  1.2894386e+00  3.0203145e-36  1.4590179e+00
  1.4088103e-32  1.6301323e+00  7.4551874e-23  1.5980355e+00
 -4.0251036e+34  1.8355457e+00  2.2099859e+13  1.7237316e+00
  3.2525057e+24  1.5265300e+00  1.9442064e+11  1.7575052e+00]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...