【发布时间】:2020-01-18 10:53:55
【问题描述】:
所以我试图在 Qt 创建器上打开我的 texture.fs 和 texture.vs,但我仍然遇到错误。为了打开不同的文件,我使用了 Qt Creator 功能,这样做更容易。所以下面的代码就是(这段代码在FragmentGeometry.cpp文件中):
void FrameGeometry::initShaders()
{
program = new QOpenGLShaderProgram();
// Compile vertex shader
if (!program->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/Other\files/texture.vs"))
std::cout<<"Problem while adding vertex shader"<<std::endl;
// Compile fragment shader
if (!program->addShaderFromSourceFile(QOpenGLShader::Fragment, "texture.fs"))
std::cout<<"Problem while adding fragment shader"<<std::endl;
// Link shader pipeline
if (!program->link())
std::cout<<"Problem while linking program"<<std::endl;
}
我也尝试了很多不同的路径,但我仍然不知道为什么它不起作用。我的代码层次结构是:
你能帮我理解为什么它不起作用吗?
【问题讨论】:
-
相对路径是相对于二进制可执行文件而不是源文件位置。你确定它是正确的?
-
@Maverobot 我正在使用带有 Qt 创建器的 Mac,可执行文件似乎是 Xcode。我将着色器放在我的主文件中,但是我们在 Qt Creator 上的项目中有这个着色器,它认为这个文件是“其他文件”,所以我认为正确的路径是 '":/Other\files/texture.vs" ' 但它仍然无法正常工作,我不知道为什么。我尝试了许多其他方式,例如“/Other files/texture.vs”或“/Other\files/texture.vs”或“../Other\files/texture.vs”。
-
可以试试绝对路径吗?
-
我试过了,但文件仍然无法打开@Maverobot
-
路径中可能缺少一个空格 -
../Other\ files/texture.vs。也尝试命名不带空格的文件夹。
标签: c++ opengl glsl qt-creator