2016-02-19 48 views
0

對不起,我不能提供更好的東西。當使用兩個輸入變量時,GLSL不會顯示顏色

我有下面的片段着色器代碼:

#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任何元素結合起來。它變得黑色。即時間* coords [1]永遠不會產生任何顏色,即使coords [1]總是1.0f並且時間很快變大。

編輯:加載着色器時沒有錯誤。

+0

請記住,時間最有可能會超過1.0f!但我懷疑這不是問題。你只是在問這裏的'時間* coords [1]',對嗎? – fordcars

+0

有什麼可疑的是,沒有工作的情況下,唯一一個兩個制服都活躍。最好仔細檢查你的統一設置代碼。 – derhass

回答

1

在您的代碼:

uniform vec3 values; //{time, a, b} 

什麼類型的值是時間?它是來自操作系統的實時值(即整數)還是計算的參數?當你設置制服時,它是基於整數嗎?如果是這種情況,超出單位範圍(即0.0 - 1.0)的值在GL着色器的某些方面可能會產生不可預測的結果。仔細檢查你通過glUniform發送的值*(這通常是我的問題的根源)。

相關問題