小编Rad*_*ivu的帖子

Qt桌面着色器编译问题

我正在使用Qt编写游戏,我已经实现了一些后期处理着色器,使其看起来更有趣.它工作正常,直到我升级到linux mint 16,现在我总是得到一个需要精度说明符的错误,这只在编译片段着色器时才会发生.因为代码在android构建时编译并且工作正常,我认为这是因为QGLShaderProgram在桌面构建中编译时,将着色器添加mediump,highp和lowp作为着色器的开头.

所以我的问题是:有没有办法让glsl编译器停止需要精度说明符,或者我应该研究如何禁用这些定义被添加?

码:

    isOk = m_displaceShader.addShaderFromSourceCode(QGLShader::Vertex,
        "#version 100                                   \n"
        "attribute mediump vec4 in_verts;               \n"
        "varying mediump vec2 out_tex;                  \n"
        "void main(void)                                \n"
        "{                                              \n"
        "   gl_Position = in_verts;                     \n"
        "   out_tex = (in_verts.xy + vec2(1.0)) * 0.5;  \n"
        "}                                              \n");
    qDebug() << m_displaceShader.log();
    isOk &= m_displaceShader.addShaderFromSourceCode(   QGLShader::Fragment,
        "#version 100                                                               \n"
        "uniform sampler2D inCol;                                                   \n"
        "uniform sampler2D inDisplace;                                              \n"
        "varying mediump vec2 out_tex;                                              \n"
        "void main(void)                                                            \n"
        "{                                                                          \n"
        "   mediump vec4 displaceCol = texture2D(inDisplace, out_tex);              \n"
        "   mediump …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt glsl

2
推荐指数
1
解决办法
2421
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1

qt ×1