对不好的头衔抱歉,但我无法想出更好的东西。
我有以下片段着色器代码:
#version 430 core
out vec4 color;
uniform vec4 coords; //set to {1.f,1.f,1.f,1.f}
uniform vec3 values; //{time, a, b}
void main() {
float time = values[0];
float c;
c = coords[1]; //green
c = coords[1]*0.5f; //dark green
c = sin(time); //works like it should. moves between black and green.
c = time*1.0f; //quickly becomes green
c = 1.0f*coords[1]; //green
c = time*coords[1]; //black.
color = vec4(0,c,0,1);
}
然而,我无法为我的生活设法将可变时间和任何元素结合在一起。它变成了黑色。即时间* coords [1]永远不会产生任何颜色,即使coords [1]总是1.0f并且时间很快变大。
编辑:加载着色器时没有错误。
答案 0 :(得分:1)
在您的代码中:
uniform vec3 values; //{time, a, b}
什么类型的价值是时间?它是来自OS的实时值(即整数),还是计算参数?设置制服时是基于整数吗?如果是这种情况,超出单位范围(即0.0 - 1.0)的值可能会在GL着色器的某些方面产生不可预测的结果。仔细检查您通过glUniform *发送的值(这对我来说通常是问题的根源)。