2013-07-09 81 views
1

我得到一个着色器编译错误在我的Android项目,我不知道什么是错用它:
的Android的OpenGL ES着色器编译出错

Shader compile error: Vertex shader compilation failed. 
ERROR: 0:4: 'gl_FragColor' : undeclared identifier 
ERROR: 0:4: 'assign' : cannot convert from 'varying 4-component vector of float' to 'float' 
ERROR: 2 compilation errors. No code generated. 

VertexShader:

uniform mat4 u_MVPMatrix; 
attribute vec4 a_Position; 
attribute vec4 a_Color; 
varying vec4 v_Color; 
void main() { 
    v_Color = a_Color; 
    gl_Position = u_MVPMatrix * a_Position; 
} 

片段着色器:

precision mediump float; 
varying vec4 v_Color; 
void main() {       
    gl_fragcolor = v_Color; 
} 

顶点着色器编译完美,但片段着色器不起作用。 由于代码是来自教程,它应该工作,当我启动教程项目时,没有编译错误。我不明白,因为我现在多次复制着色器代码1:1,它仍然无法工作。

解决:我发现问题...我通过一个方法编译着色器,但该方法始终使用glCreateShader(GL_VERTEX_SHADER);难怪它无法编译片段着色器。这也是为什么在日志中说'顶点着色器编译失败',这样的转储错误需要数小时的时间...... ^^

+0

你声称顶点着色器编译正常,但你已经发布了'着色器编译错误:顶点着色器编译失败。' – genpfault

+0

idk它是什么opengl说,但我编译顶点着色器,然后片段着色器和片段着色器发生此错误 – hawelo

回答

3

GLSL与C一样区分大小写。

尝试gl_FragColor。注意CamelCase。

+1

也不起作用,并仍然是相同的错误 – hawelo