file.open() 找不到文件、c++、Xcode、OpenGL

file.open() not finding file, c++, Xcode, OpenGL

我已经为此尝试了一整天,但没有找到有效的答案。我正在尝试在我的 opengl 程序中加载着色器,但是该程序似乎无法找到这些文件。任何帮助将不胜感激。这是代码

#include "Shader.hpp"
#include <fstream>
#include <iostream>

static std::string loadShader(const std::string& filename);
static void checkShaderError(GLuint shader, GLuint flag, bool isProgram, const          std::string& errMessage);
static GLuint createShader(const std::string& text, GLenum shaderType);

Shader::Shader(const std::string& filename){
  m_program = glCreateProgram();
  m_shaders[0] = createShader(loadShader(filename + ".vs"), GL_VERTEX_SHADER);
  m_shaders[1] = createShader(loadShader(filename +".fs"),   GL_FRAGMENT_SHADER);

  for(unsigned int i = 0; i < NUM_SHADERS; i++ ){
      glAttachShader(m_program, m_shaders[i]);
  }

  glBindAttribLocation(m_program, 0, "position");

  glLinkProgram(m_program);
  checkShaderError(m_program, GL_LINK_STATUS, true, "Error: Program failed to   link!");

  glValidateProgram(m_program);
  checkShaderError(m_program, GL_VALIDATE_STATUS, true, "Error: Program is invalid!");
}

Shader::~Shader(){
  for(int i = 0; i < NUM_SHADERS; i++)
  {
    glDetachShader(m_program, m_shaders[i]);
    glDeleteShader(m_shaders[i]);
  }
  glDeleteProgram(m_program);
}

static std::string loadShader(const std::string& filename){

  std::ifstream file;
  file.open((filename).c_str());

  std::string output;
  std::string line;

  if(file.is_open()){
      while(file.good()){
          getline(file, line);
          output.append(line + "\n");
      }
  }else{
      std::cerr << "Shader could not be loaded, shader id: " << filename <<       std::endl;
  }
  file.close();
  return output;
}

我遇到了完全相同的问题。完全重建项目并再次尝试 运行。

编辑:在代码中更改文件路径有一个奇怪的行为。我个人总是需要重建文件来解决这个问题。