假设一个shader中使用了如下变量:
uniform float specIntensity; uniform vec4 specColor; uniform float t[2]; uniform vec4 colors[3];
在OpenGL程序中可以使用下面的代码设置这些变量:
GLint loc1,loc2,loc3,loc4; float specIntensity = 0.98; float sc[4] = {0.8,0.8,0.8,1.0}; float threshold[2] = {0.5,0.25}; float colors[12] = {0.4,0.4,0.8,1.0, 0.2,0.2,0.4,1.0, 0.1,0.1,0.1,1.0}; loc1 = glGetUniformLocation(p,"specIntensity"); glUniform1f(loc1,specIntensity); loc2 = glGetUniformLocation(p,"specColor"); glUniform4fv(loc2,1,sc); loc3 = glGetUniformLocation(p,"t"); glUniform1fv(loc3,2,threshold); loc4 = glGetUniformLocation(p,"colors"); glUniform4fv(loc4,3,colors);