3

我目前正在玩 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];
}

非常感谢你们!

4

1 回答 1

6

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

于 2011-08-16T08:46:31.313 回答