C++ 中 OpenGL 项目的着色器阅读器

问题描述 投票:0回答:0

我正在使用 Visual Studio 2022。 我正在尝试创建一个可以像着色器一样读取文件的程序。它可以让我不把每一段代码都放在同一个文件中......

所以,澄清一下我想做什么:

  • 我在单独的文件里写了一个着色器
  • 我想读这个文件
  • 然后我想从我刚刚阅读的文件构建着色器

为此,我尝试使用“string”、“stringstream”…… 我设法做到了:

std::string readShader(const char* path){
    std::string shader;
    std::ifstream file;
    file.open(path, std::ios::in);

    if (file.is_open()) {
    std::stringstream code;

    code << file.rdbuf();
    shader = code.str();

    file.close();
    }

    return shader;
}

我不确定这个问题,但我无法构建着色器。

事实上,我试图通过读取文件来打印我得到的... 有时我得到了着色器,它很棒但是......我也得到了那种东西:

ázý▓l☻

所以,这肯定是问题所在。

我的意思是,那是什么:

ázý▓l☻

为什么我会这样?

那不是我文件的内容!

我认为这是因为我的函数“返回”了一些最终被删除的东西(或其中的一部分......)。

你能解释一下这是什么问题吗?如何解决?还有为什么我得到那个?

c++ opengl glsl
© www.soinside.com 2019 - 2024. All rights reserved.