我正在使用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)