所以我不能让我的着色器来渲染颜色。当我不使用属性Color设置颜色时,我的着色器工作。我的vertex代码是:
typedef struct
{
GLKVector3 Position; //Position
GLKVector4 Color; //32 Bit color
GLKVector3 Normal; //For Lighting
GLKVector2 TexCoord; //For Texturing
} Vertex;
我给所有顶点的颜色都是1,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的行。
请帮帮忙,我已经在这上面坐了一段时间了
发布于 2013-08-03 06:20:20
我找到了这个问题的答案,但是我无法访问我的旧账号bobjamin,所以我使用这个新账号。解决方案相当简单。首先,我应该提到drhass的建议确实有帮助,因为它允许我从顶点着色器设置静态颜色,它将显示,但问题是名称颜色必须是一个保留的关键字,它导致了问题。
答案是将属性颜色更改为SourceColor,一切工作正常!
https://stackoverflow.com/questions/17912677
复制相似问题