OpenGL glfw黑色窗口

时间:2016-02-09 17:48:48

标签: opengl glfw glew

我对glfw有一个小问题。

我的代码非常简单,我想要创建一个空窗口。

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

int main(void) {


// initialise the windows
GLFWwindow *window;

if (!glfwInit()) {

    return -1;
}

// create  a windows

window = glfwCreateWindow(640, 480, "Test", NULL, NULL);
if (!window) {
    fprintf(stderr, "Failed to initialize GLFW\n");
    glfwTerminate();
    return -1;
}


// make the window's current context
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
// loop until the window close

while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // swap back and front buffers

    glfwSwapBuffers(window);


    // poll the events

    glfwPollEvents();
}

std::cout << "finished ";
glfwTerminate();

return 0;

}

这段代码编译但是当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的...... 我试着像那样使用glClearColor

while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(1, 1, 0, 0);

但我的窗户仍然是白色的.... 我使用visual studio 2015。

如何获得黑色窗口?

修改:

我忘了添加这个: glfwMakeContextCurrent(窗口);

1 个答案:

答案 0 :(得分:1)

对于未来的访问者,我将编辑作为正式答案发布。

这里缺少的是通过调用glfwMakeContextCurrent(window);

将新创建的窗口设置为当前的OpenGL上下文

有趣的是,代码中的注释表明你正在这样做

  

// make the window's current context

但是你不要调用上面的方法,而是在之后立即设置背景颜色。如果您在此评论后添加上述方法调用,并在设置背景颜色之前,那么当我运行您的代码时,它可以正常工作。