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

Posted

技术标签:

【中文标题】即使 glfwInit() 返回 1 也无法让 GLFW 工作【英文标题】:Can't get GLFW to work even if glfwInit() returns 1 【发布时间】:2013-02-06 13:22:32 【问题描述】:

我已经设置了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,为什么要显式发送 Win32 消息? @rioki 因为我不知道我不应该这样做。 【参考方案1】:

你的问题在这里:

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

不,你不应该。在您使用 GLFW 创建 窗口 之前,您无法获得输入。许多窗口系统通常都是这样。如果你有一个窗口,你只会得到输入。

【讨论】:

谢谢 Nicol,我想我可能只能将 GLFW 用于句柄输入,因为我已经在不使用 GLFW 的情况下创建了窗口。

以上是关于即使 glfwInit() 返回 1 也无法让 GLFW 工作的主要内容,如果未能解决你的问题,请参考以下文章

即使返回也无法在函数外打印函数的参数

视频即使发布也不会停止播放

即使定义了搜索路径,也无法找到自定义共享库

即使返回的内容具有标头 Content-Type:text/html; Chrome 开发工具也无法显示响应字符集=UTF-8

为啥我得到:“未定义的对 `glfwInit' 的引用”?

即使模拟设置为 Off,Settings.Secure.ALLOW_MOCK_LOCATION 也始终返回 1