GLSL Shader编译失败,没有错误消息

时间:2019-04-18 11:54:09

标签: 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);
glCompileShader(shader);

我收到一条错误消息,指出未编译着色器,但错误消息的长度为0。我完全卡在这里。

为什么着色器无法编译?

1 个答案:

答案 0 :(得分:0)

您的示例不完整,因此我想知道您是否使用glCreateShader(GL_FRAGMENT_SHADER)正确创建了着色器。

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);