Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QT Creator上正确打开顶点和片段着色器_C++_Opengl_Glsl_Qt Creator - Fatal编程技术网

C++ 如何在QT Creator上正确打开顶点和片段着色器

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

因此,我试图在Qt creator上打开我的texture.fs和texture.vs,但仍然有一个错误。为了打开不同的文件,我使用了Qt Creator函数,这样做比较容易。因此,以下代码是(此代码位于FragmentGeometry.cpp文件中):

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;
}