0

所以我不能让我的着色器用颜色渲染。当我不使用属性颜色设置颜色时,我的着色器工作。我的顶点代码是:

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 的行。

请帮助我已经坐了一段时间了

4

1 回答 1

0

我找到了这个问题的答案,但我无法访问 bobjamin 的旧帐户,所以我正在使用这个新帐户。解决方案相当简单。首先我应该提到,drhass 的建议确实有帮助,因为它允许我从顶点着色器设置静态颜色并且它会显示,但是问题是名称 Color 必须是保留关键字并且它会导致问题。

答案是将属性 Color 更改为 SourceColor,一切正常!

于 2013-08-02T22:20:19.850 回答