Передача массива glsl pyOpenGL - PullRequest
       24

Передача массива glsl pyOpenGL

2 голосов
/ 16 августа 2011

Я сейчас играю с glsl.Для этого мне нужно передать массив из кода opengl в gsls, который затем в ответ вычисляет новый цвет из массива.Но почему-то это не работает для меня.Вместо того, чтобы получить весь массив, я всегда привязан только к первой записи.Не могли бы вы помочь мне, сказав, что я делаю неправильно?

import numpy as np
\\...
array = np.array([1.2,2.5,3.8,4.3,5.6, #....])
location = glGetUniformLocation(program,"arrayInShader")
glUniform1fv(location,1,array)

и в шейдере:

uniform float arrayInShader[5];
varying vec3 color;
void main()
{
    color.r=arrayInShader[0]+arrayInShader[1];
    color.g=arrayInShader[2];
    color.b=arrayInShader[3]+arrayInShader[4];
}

Большое спасибо, ребята!

1 Ответ

5 голосов
/ 16 августа 2011

Второй параметр glUniform*v - это count . Количество элементов для загрузки. Вы говорите, что загружаете только 1 число с плавающей точкой в ​​массив, поэтому OpenGL загружает только один число с плавающей точкой в ​​массив.

...