C++ 如何在QT Creator上正确打开顶点和片段着色器
因此,我试图在Qt creator上打开我的texture.fs和texture.vs,但仍然有一个错误。为了打开不同的文件,我使用了Qt Creator函数,这样做比较容易。因此,以下代码是(此代码位于FragmentGeometry.cpp文件中):C++ 如何在QT Creator上正确打开顶点和片段着色器,c++,opengl,glsl,qt-creator,C++,Opengl,Glsl,Qt Creator,因此,我试图在Qt creator上打开我的texture.fs和texture.vs,但仍然有一个错误。为了打开不同的文件,我使用了Qt Creator函数,这样做比较容易。因此,以下代码是(此代码位于FragmentGeometry.cpp文件中): void FrameGeometry::initShaders() { 程序=新QOpenGLShaderProgram(); //编译顶点着色器 如果(!program->addShaderFromSourceFile(QOpenGLShad
void FrameGeometry::initShaders()
{
程序=新QOpenGLShaderProgram();
//编译顶点着色器
如果(!program->addShaderFromSourceFile(QOpenGLShader::Vertex,:/Other\files/texture.vs”))
std::cout冒号(:
)建议您的文件应该在.qrc文件中声明-也就是说,如果您使用的是Qt Creator,您需要将行RESOURCES=your\u RESOURCES\u file.qrc
添加到test\u build\u project\u new.pro
。然后,确保您的\u RESOURCES\u文件。qrc
声明您需要的文件。例如:
着色器/texture.vs
着色器/texture.fs
然后,从代码中打开如下文件:
void FrameGeometry::initShaders()
{
程序=新QOpenGLShaderProgram();
//编译顶点着色器
如果(!program->addShaderFromSourceFile(QOpenGLShader::Vertex,:/shaders/texture.vs”))
std::cout相对路径是相对于二进制可执行文件而不是源文件位置的。你确定它是正确的吗?@Maverobot我正在使用带有Qt creator的Mac,可执行文件似乎是Xcode。我将着色器放在我的主文件中,但我们在Qt creator上为项目设置了此着色器,它将此文件视为“其他文件”o我认为正确的路径是'':/Other\files/texture.vs',但它仍然不起作用,我不知道为什么。我尝试了许多其他方法,如''/Other files/texture.vs“或“/Other\files/texture.vs”或“./Other\files/texture.vs”。您可以尝试使用绝对路径吗?我尝试过了,但是文件仍然无法打开@maverobot。您可能在路径-。/Other\files/texture.vs
中缺少一个空格。请尝试命名没有空格的文件夹。
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;
}