GLFW:'WGL: The driver does not appear to support OpenGL' 创建 window 时出错

GLFW: 'WGL: The driver does not appear to support OpenGL' error when creating window

我正在将我的简单 lwjgl3 游戏移植到 C++,并获得 Error: WGL: The driver does not appear to support OpenGL。 java 中的代码几乎相同,所以我想知道出了什么问题以及如何解决它:

int main(int argc, char** argv) {
    glfwSetErrorCallback(error_callback);
    if (!glfwInit()) {
        std::cerr << "Failed to initialize GLFW" << std::endl;
        return -1;
    }

    glfwDefaultWindowHints();
    //glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
    glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
    glfwWindowHint(GLFW_SAMPLES, 4);

    GLFWwindow* window = glfwCreateWindow(640, 480, "Example", nullptr, nullptr);
    if (!window) {
        std::cerr << "Failed to create window" << std::endl;
        glfwTerminate();
        return -1;
    }
    ...

我正在使用msys2mingw-w64,并在mingw-w64 shell中编译程序。首先,我认为问题出在我构建的 glfw3 上,所以我改用了 glfw 的 lwjgl3 副本,但得到了同样的错误。我尝试了推荐的提示、上下文版本等,但无济于事。我很确定驱动程序支持 OpenGL,只是为了确保我也检查了更新。

在测试东西以查看哪些有效和无效时,我已确认所有 glfw 和 SFML 示例均无效(我都是使用 mingw-w64 构建的)。编译期间没有错误,cmd 中没有异常 and/or 错误,也没有创建 window。

我对 windows 开发不是很熟悉,所以我不确定这是否是 mingw-w64、glfw 或 wgl 的问题。

仅使用独立的 mingw-w64 解决了它。同一个程序 运行 现在可以正常运行,没有任何错误,更不用说 glfw 和 SFML 示例现在 运行 也可以了。

我还没有发现可能导致错误的原因,我想它与msys2有关,但现在问题已经解决了。