繁体   English   中英

glsl着色器的C ++ Qt“不受支持的版本”错误

[英]C++ Qt “unsupported version” error for glsl shader

我正在尝试制作Qt控制台应用程序,它将启动计算着色器,但是在启动时会出现以下错误:

QOpenGLShader::compile(Compute): 0(1) : error C0201: unsupported version 44
0(1) : error C0206: invalid token "<invalid atom 284073152>" in version line

Shader经过测试且正确(在我的基于openFrameworks的程序中可以正常工作)并从

#version 440

在基于Qt的程序中,我使用以下代码在main.cpp中初始化OGL上下文

QSurfaceFormat surfaceFormat;
surfaceFormat.setMajorVersion(4);
surfaceFormat.setMinorVersion(4);
surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(surfaceFormat);

QOpenGLContext openGLContext;
openGLContext.create();
if(!openGLContext.isValid())
{
    qDebug()<<"Failed to create openGL context";
    return 0;
}
QOffscreenSurface surface;
surface.create();
if(!surface.isValid())
{
    qDebug()<<"Failed to create surface";
}

然后用编译编译器

QOpenGLShaderProgram compute;
compute.addShaderFromSourceFile(QOpenGLShader::Compute,":/shaders/cull.glsl");
compute.link();

我缺少Qt特定的东西吗?

所以这个问题对我来说有点出乎意料。 着色器文件由Visual Studio保存,因此具有Windows编码。 OpenFrameworks程序也是由Visual Studio构建的,因此启动着色器没有问题,但是Qt无法处理Windows编码的EOL。 在UTF-8中修复着色器文件已解决的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM