glfw没有创建窗口

时间:2016-02-18 03:24:36

标签: c++ opengl glfw glew

当我创建一个简单的glfw窗口并设置这两个标志时:

glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

窗口将为NULL,我不知道为什么。 如果没有调用这两个东西,将创建窗口。

以下是代码:

#include <iostream>
using namespace std;

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main() {

    if (!glfwInit()) {
        cout << "glfw did not initialize!" << endl;
        return -1;
    }

    glfwWindowHint(GL_SAMPLES, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    GLFWwindow* window;
    window = glfwCreateWindow(640, 300, "ARoo", NULL, NULL);
    if (!window) {
        cout << "window == null" << endl;
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)) {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
}

即时通讯使用visual studi comunity 2015,windows 8.1 x64(glfw和glew是x32) 我的视频驱动程序是最新的。

1 个答案:

答案 0 :(得分:3)

问题可能与请求的OpenGL配置文件有关。

您可以获得有关正在发生的事情的诊断消息,您只需要设置一个回调,这可以在glfwInit()之前完成:

static void glfwError(int id, const char* description)
{
  std::cout << description << std::endl;
}

int main()
{
  glfwSetErrorCallback(&glfwError);
  glfwInit();
  ...