glGenBuffer 导致分段错误

glGenBuffer causes segmentation fault

将 glGenBuffers 与几乎任何其他 gl 函数一起使用时,程序在启动时崩溃

#define GL_GLEXT_PROTOTYPES
#include </usr/include/GLFW/glfw3.h>
#include <iostream>

int main()
{
    glfwInit();
    GLFWwindow *wd = glfwCreateWindow(900, 800, "main window", NULL, NULL);
    glfwMakeContextCurrent(wd);
    GLuint *buffer;
    glGenBuffers(1, buffer);
    glBindBuffer(GL_ARRAY_BUFFER, *buffer);

    while (!glfwWindowShouldClose(wd))
    {
        glfwPollEvents();
    }
    glfwTerminate();
}

变化:

    GLuint *buffer;
    glGenBuffers(1, buffer);
    glBindBuffer(GL_ARRAY_BUFFER, *buffer);

至:

    GLuint buffer;
    glGenBuffers(1, &buffer);
    glBindBuffer(GL_ARRAY_BUFFER, buffer);

问题是:您为 OpenGL 提供了一个未初始化变量的值,它会将其视为存储缓冲区 ID 的内存位置。 相反,您应该声明一个 stack/local 变量并使用指向该变量的指针(这是一个有效的地址位置)来提供 OpenGL。