2013-07-28 69 views
0

所以我不能讓我的着色器渲染顏色。當我不使用Color屬性設置顏色時,我的着色器有效。 我頂點代碼:着色器不工作

typedef struct 
{ 
    GLKVector3 Position;   //Position 
    GLKVector4 Color;  //32 Bit color 
    GLKVector3 Normal;  //For Lighting 
    GLKVector2 TexCoord;   //For Texturing 
} Vertex; 

我已經給出了顏色的所有頂點爲[1,0,0,1] 我的頂點着色器是這樣的:

attribute vec3 Position; 
attribute vec4 Color; 
attribute vec3 Normal; 
attribute vec2 TexCoord; 
uniform mat4 ModelViewMatrix; 
uniform mat4 ProjectionMatrix; 
varying vec4 DestinationColor; 
void main(void) 
{ 
    gl_Position = ProjectionMatrix*ModelViewMatrix*vec4(Position,1); 
    DestinationColor = Color; 
}  

我的片段着色器是這樣的:

precision mediump float; 
varying lowp vec4 DestinationColor; 
void main (void) 
{  
    gl_FragColor =DestinationColor; 
}  

並顯示什麼。

它甚至不工作,如果我改變片段着色器說gl_FragColor = vec4(1,0,0,1);除非我取消註釋頂點着色器中設置DestinationColor的行。

請幫助我一直坐在這一段時間,現在

+0

我看不出你在做什麼錯。你是否從着色器和程序編譯中檢查錯誤日誌? – combinatorial

+0

是的它完成沒有錯誤,並運行良好 – bobjamin

+0

嘗試使用兩個着色器中變化非常相同的聲明(不要在兩個着色器中使用不同的精度限定符)。 – derhass

回答

0

我找到了答案,這個問題,但我不能訪問我的舊賬戶bobjamin所以我用這個新的。 解決方案非常簡單。 首先,我應該提到drhass的建議確實有幫助,它允許我從頂點着色器設置一個靜態顏色,然後顯示問題是,Color的名稱必須是保留關鍵字,並且會導致問題。

答案是將屬性Color更改爲SourceColor,一切正常!

+0

GLSL中唯一保留的名稱是帶有'gl_'前綴的任何內容,以及http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf中列出的一組關鍵字和內置函數。第16頁。軟件中有一個錯誤,或者您的平臺違反了規範。 –