2011-06-14 62 views
0

我有具有以下均勻的着色器宣稱:傳遞GLfloat作爲均勻失敗(IOS)

均勻highp浮FR;

在我的渲染方法,它被設置爲:

GLfloat num = 1.0f; 
glUniform1f(glGetUniformLocation(self.Program, "fr"), num); 

但它不會設置的。這些看起來很基本,所以我不能發現它爲什麼不起作用。 我使用了正確的語法嗎?

+0

你怎麼知道它沒有設置? Shader沒有做你想要的東西?也許這是由別的東西引起的。 – 2011-06-14 06:54:18

+0

它使用默認值0.根據我下面的評論,我認爲它可能是它被優化出來的問題。稍後更新! – Simon 2011-06-15 10:08:36

回答

0

我已經找到了我的問題。

我在調用使用程序之前設置了統一。對於任何發現此答案的人,請確保在爲該方案設置制服之前致電使用程序。

1

也許你沒有在着色器代碼中使用這個fr值?然後編譯器會使它不是統一的,並且不是真的將它包含在編譯的程序中,glGetUniformLocation會返回像-1這樣的索引。檢查着色器和glGetUniformLocation返回的值。

乾杯, 剋日什托夫·Zabłocki

+0

謝謝你的擡頭。我想知道編譯器是否會優化它,但只有在今天上午我從亞馬遜的着色器書到達時才找到它的參考。 – Simon 2011-06-15 10:08:07