2014-01-05 86 views
2

我想寫一個着色器程序,它將呈現不同顏色的網格的三角形(所以我可以選擇一個三角形)。我嘗試使用gl_PrimitiveID,但它總是返回0,例如:GLSL - 片段着色器 - 每個三角形都有不同的顏色

#version 330 

out uvec3 FragColor; 

void main() 
{ 
    FragColor = uvec3(0.0, 0.0, gl_PrimitiveID); 
} 

此着色器總是呈現黑色。

+0

爲什麼使用浮點常量作爲無符號整數vec3?你的GLSL編譯器是否應該至少抱怨這種情況? (例如,採用2個浮點組件和一個整數的「uvec3(...)」沒有超載)。對於這個問題,你是否誠實地繪製成一個整數顏色緩衝區?或者這是你試圖做的一件事情,使'gl_PrimitiveID'工作? –

+0

對不起,我的壞,gl_PrimitiveID工作正常,問題是與我的幀緩衝區。 – user1784182

回答

3

要以最簡單的方式實現您想要的效果,我會將其他頂點數組作爲包含每個三角形顏色的顏色屬性傳遞到頂點着色器。然後將其作爲不同的輸出傳遞到您的片段着色器中。就是這樣。這樣,您可以精確指定每個頂點的顏色。

相關問題