我创建了一个非常简单的GLFW窗口实现。我的实现看起来像这样
// Include standard headers
#include <stdio.h>
#include <stdlib.h>
// Include glfw for window handling
#include <GLFW/glfw3.h>
int SCREEN_WIDTH = 1280;
int SCREEN_HEIGHT = 720;
GLFWwindow* window;
int main() {
if(!glfwInit()) {
fprintf( stderr, "Failed to initialize GLFW!\n" );
return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);
window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Title", NULL, NULL);
if( !window )
{
fprintf( stderr, "Failed to create window!\n" );
glfwTerminate();
return -1;
}
glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
do {
glfwSwapBuffers(window);
} while(!glfwGetKey(window, GLFW_KEY_ESCAPE));
glfwTerminate();
return 0;
}
它可以正常编译,但是当我运行该应用程序时,它只是“冻结”,没有显示正确的清晰颜色或其他任何颜色。它只是像疯了似的(Windows 7中的“思考”光标图标旋转并永不停止)。
我想知道为什么它会像这样冻结,有人知道吗?
编辑:
找到了解决我问题的方法。我正在从GLFW2示例中学习,但是拥有最新版本(GLFW3)需要我重做一些代码。我没有意识到的是glSwapBuffers(window)调用本身并没有调用glfwPollEvents(),这给了我一个问题。
最佳答案
您没有清除缓冲区,因此不会显示透明的颜色。
您没有添加任何类型的延迟,所以您正在交换空缓冲区(“疯狂地思考”)。
关于c++ - 简单的GLFW卡住(认为像疯了似的,不停下来),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19015749/