C GLSL着色器编译失败,没有错误消息

C GLSL着色器编译失败,没有错误消息,c,opengl-es-2.0,C,Opengl Es 2.0,我在代码中嵌入了以下着色器: static const GLchar * frag_shader_rect = "precision mediump float;\n" "varying vec4 v_color;\n" "void main() {\n" " gl_FragColor = v_color;\n" "}\n"; 当我试图用 glShaderSource(shader, 1, &frag_shader_rect, NULL);

我在代码中嵌入了以下着色器:

static const GLchar * frag_shader_rect =
    "precision mediump float;\n"
    "varying vec4 v_color;\n"
    "void main() {\n"
    "   gl_FragColor = v_color;\n"
    "}\n";
当我试图用

glShaderSource(shader, 1, &frag_shader_rect, NULL);
glCompileShader(shader);
我收到一条错误消息,指出未编译着色器,但错误消息长度为0。我完全被困在这里了


为什么着色器没有编译?

您的示例不完整,因此我想知道您是否正确地使用glCreateShader(GLU片段\U着色器)创建了着色器


glCompileShader中的双括号?对不起,我在该命令周围有一个包装器,用于检查我为本文删除的错误,这就是原因。我会删除它们的随机想法:尝试添加一个
#版本
作为
frag#u shader_rect
的第一行。添加到我之前的评论中,它应该是OpenGL ES 2.0的
#版本100
,如参考文献(第13页,第3.4节预处理器)中所述,尝试了这一点,但不幸地得到了相同的结果:(
static const GLchar* frag_shader_rect =
    "precision mediump float;\n"
    "varying vec4 v_color;\n"
    "void main() {\n"
    "   gl_FragColor = v_color;\n"
    "}\n";

GLuint shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(shader, 1, &frag_shader_rect, NULL);
glCompileShader(shader);