首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GLSL片段着色器不会编译

GLSL片段着色器不会编译
EN

Stack Overflow用户
提问于 2012-12-05 19:46:21
回答 1查看 1.1K关注 0票数 1

我完全被困在这里了。我有以下片段着色器在工作:

代码语言:javascript
运行
复制
varying lowp vec4 fposition;
varying lowp vec4 fcolor;
varying lowp vec2 ftexturecoordinates;


void main() {
    gl_FragColor = fcolor;
}

如果我试图添加任何内容(例如:vec4 light position = vec4(-2.0, 2.0, 1.0, 1.0)),它将不会编译。我不知道如何获得错误代码/描述,但我不能让任何正常的OpenGL ES着色器工作。我有相同的着色器编译代码在这个应用程序和我在我的所有其他应用程序,所以我知道这部分工作很好。如果有的话,我能做些什么来找到关于这个问题的信息呢?

EN

Stack Overflow用户

回答已采纳

发布于 2012-12-05 20:14:34

编译着色器后,可以检查GL_COMPILE_STATUS (如果是GL_FALSE ),可以使用glGetShaderInfoLog获取有关编译错误的其他信息。

下面是演示如何使用glGetShaderInfoLog的片段:

(我将项目特定的错误签入以供参考,但将其注释掉,因为没有其周围的框架,它将无法工作。)

代码语言:javascript
运行
复制
glCompileShader(shader);
//mada_check_gl_error();

GLint compiled;
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
//mada_check_gl_error();
if (!compiled)
{
    GLint length;
    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length);
    //mada_check_gl_error();
    if (length > 0)
    {
        GLint infoLength;
        char* infoBuf = (char*) malloc(sizeof(char) * length);
        glGetShaderInfoLog(shader, length, &infoLength, infoBuf);
        //mada_check_gl_error();
        //mada_log(logERROR, infoBuf);
        free(infoBuf);
        //SysUtils::error("Error compiling shader. See log for info.");
    }
    //SysUtils::error("Failed to compile shader. No further info available.");
}
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13731168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档