即使 glfwInit() 返回 1 也无法让 GLFW 工作

Can't get GLFW to work even if glfwInit() returns 1

本文关键字:GLFW 工作 glfwInit 返回 即使      更新时间:2023-10-16

我已经设置了GLFW库,根据它的用户指南,我应该使用glfwInit()函数来初始化它。之后,我应该可以在按下键盘上的键后调用回调函数,但这个函数没有被调用,所以我试着用更简单的方法来获取鼠标位置。但它也不起作用,所以我认为我的整个GLFW出了问题。

这是我的应用程序的主循环:

while (!m_exit)
{
    int x, y;
    glfwGetMousePos(&x, &y);
    glfwPollEvents();
    gameCycle();                        // Do one cycle
    while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
    {
        // Check the pressence of commands
        if (!GetMessage (&msg, NULL, 0, 0))
        {
            return msg.wParam; // Hand the control on to system
        }
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
}

同样在这个循环之前,我初始化我的GLFW:

// Initialize GLFW
if( !glfwInit() )
{
    exit( EXIT_FAILURE );
}
glfwSetKeyCallback(processKeys);
// Main message loop:
int loopRet = g_pGameAppLayer->mainLoop();

当我检查保存在xy变量中的值时,我只得到-858993460,这表明没有值传递给它们。

那么,在设置GLFW时,我缺少什么呢?

您的问题在这里:

之后,我应该能够——例如——在我按下键盘上的键后调用回调函数

不,你不应该。在使用GLFW创建窗口之前,您无法获得输入。这通常适用于许多开窗系统;只有当你有一个窗口时,你才能得到输入。