glsl pyOpenGL数组传递

Don*_*nny 2 glsl pyopengl

我现在正在玩glsl.为此,我需要将一个数组从opengl代码传递给gsls,然后返回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)
Run Code Online (Sandbox Code Playgroud)

并在着色器中:

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];
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Nic*_*las 5

第二个参数glUniform*v计数.要上传的元素数量.你说你只是在数组中加载1个浮点数,因此OpenGL只将一个浮点数加载到数组中.