c++ - glShaderSource崩溃

标签 c++ opengl

我用:

std::string source;
char value;
std::ifstream stream(paths[id]);
while (stream.get(value)) {

    source += value;
}
stream.close()

        
        
int shader = glCreateShader(mode);
shaders[id] = shader;


glShaderSource(shader, 1, (const GLchar* const *)source.c_str(), nullptr);

glCompileShader(shader);
应用崩溃
源变量也包含以下内容:
 #version 330 core
 layout(location = 0) in vec3 aPos;

void main()
{
    gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
}
应用程序崩溃了!
有什么问题

最佳答案

问题在这里:(const GLchar* const *)source.c_str()。没有强制转换(实际上是reinterpret_cast)就无法工作的事实表明您做错了事。
将指针保存到变量const char *ptr = source.c_str();,然后将&ptr传递给glShaderSource

关于c++ - glShaderSource崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63656128/

相关文章:

c++ - GLSL VertexShader 适用于 Qt 但不适用于普通 OpenGL(SL)

c++ - fatal error LNK1302 : only support linking safe . 网络模块;无法链接 ijw/native .netmodule

c++ - 在 OpenGL 中动态创建规则网格的互补三角形

c++ - OpenGL 分层渲染

c++ - 射线平面相交怎么做?

opengl - 如何在视觉上定义将纹理数组附加到 FBO 的颜色附加点?

c++ - 为什么 VAO 可以在不绑定(bind)的情况下使用 VBO 数据?

c++ - 任何人都知道为什么这个 POST with WinHttp 失败了

c++ - 从函数返回对象

c++ - 如何减少事件总线实现中的耦合