我对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(窗口);
答案 0 :(得分:1)
对于未来的访问者,我将编辑作为正式答案发布。
这里缺少的是通过调用glfwMakeContextCurrent(window);
有趣的是,代码中的注释表明你正在这样做
// make the window's current context
但是你不要调用上面的方法,而是在之后立即设置背景颜色。如果您在此评论后添加上述方法调用,并在设置背景颜色之前,那么当我运行您的代码时,它可以正常工作。